Pobieranie oracle.jdbc.driver.LogicalConnection wymaga oracle.jdbc.OracleConnection

Próbuję połączyć się z bazą danych Oracle w aplikacji Java działającej na serwerze WebSphere. Muszę być w stanie utworzyć deskryptor tablicy, aby użyć go w wywołaniu procedury.

Kod wygląda tak:

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());

Linia, która dzwoniArrayDescriptor.createDescriptor rzuca wyjątek rzucania klasy

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)

Przechodząc przez to z debuggerem, widzę toconn jest zdecydowanie aoracle.jdbc.driver.LogicalConnection. Problem polega na tym, że nie mogę się odwołaćLogicalConnection w moim kodzie, ponieważ ta klasa nie jest publiczna, więc nie mogę po prostu zrobić czegoś takiego:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper());

.

I to:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper());

zwraca także wyjątek rzucania klasy:

java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection

Muszę miećOracleConnection obiekt, ale wydaje mi się, że nie mogę go zdobyćLogicalConnection to mi się wróci. Czy ktoś kiedyś to widział? Czuję, że brakuje mi tutaj czegoś naprawdę oczywistego, ale może po prostu potrzebuję kolejnej filiżanki kawy ...

questionAnswers(1)

yourAnswerToTheQuestion