Para obter oracle.jdbc.driver.LogicalConnection, precisa oracle.jdbc.OracleConnection
Estou tentando conectar-me a um banco de dados Oracle dentro de um aplicativo Java em execução no WebSphere. Eu preciso ser capaz de criar um descritor de matriz para usar em uma chamada para um procedimento.
O código fica assim:
Connection conn=null;
ArrayDescriptor arrayDescriptor;
Connection tmpCon = jdbcTemplate.getDataSource().getConnection();
conn = WSCallHelper.getNativeConnection(tmpCon);
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",conn);
IDs = new oracle.sql.ARRAY(arrayDescriptor, conn, list.toArray());
A linha que chamaArrayDescriptor.createDescriptor
lança uma exceção de conversão de classe
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.OracleConnection at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149) at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115)
Percorrendo isso com o depurador, posso ver queconn
é definitivamente umoracle.jdbc.driver.LogicalConnection
. O problema é que não posso realmente fazer referênciaLogicalConnection
no meu código porque essa classe não é pública, então não posso simplesmente fazer algo assim:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper());
.
E isto:
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper());
também retorna uma exceção de conversão de classe:
java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection
Eu preciso ter umOracleConnection
objeto, mas não consigo obter um doLogicalConnection
que é devolvido para mim. Alguém já viu isso antes? Sinto que estou perdendo algo realmente óbvio aqui, mas talvez eu só precise de outra xícara de café ...