oracle.jdbc.driver.T4CConnection не может быть приведен к oracle.jdbc.OracleConnection

WrappedConnectionJDK6 wrapped = (WrappedConnectionJDK6) dbStrategy.getConnection();
            Connection underlyingConn = wrapped.getUnderlyingConnection();
            OracleConnection oracleConn = (OracleConnection)underlyingConn;

Последняя строка дает ошибку -

> ERROR
> [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/web].[resteasy-servlet]]
> (http-/0.0.0.0:8080-1) Servlet.service() for servlet resteasy-servlet
> threw exception: org.jboss.resteasy.spi.UnhandledException:
> java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot
> be cast to oracle.jdbc.OracleConnection

person user2093576    schedule 16.04.2013    source источник
comment
а в чем вопрос?   -  person Gab    schedule 16.04.2013
comment
Нужно получить соединение с оракулом из WrappedConnectionJDK6 .. но это создает проблему с кастингом. Любая подсказка, как получить соединение с оракулом из WrappedConnectionJDK6?   -  person user2093576    schedule 16.04.2013
comment
JBoss оборачивает соединение с оракулом своим собственным (org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6). Я пытаюсь вызвать #getUnderlyingConnection(), чтобы получить базовое соединение. Но при преобразовании этого в соединение с Oracle выдается ошибка... Ошибка приведения соединения   -  person user2093576    schedule 17.04.2013


Ответы (1)


AFAIK T4CConnection должен реализовать oracle.jdbc.OracleConnection. ИМХО, у вас есть 2 реализации драйвера, одна на сервере приложений и одна в зависимостях вашего проекта, должна быть проблема с загрузкой классов, так как извлеченная реализация драйвера загружается загрузчиком общего класса, и вы пытаетесь передать ее классу, загруженному веб-приложением загрузчик классов.

Вы можете убедиться, что зависимость вашего веб-приложения совпадает с реализацией, предоставленной сервером, или просто исключить зависимость из веб-приложения при его упаковке.

Если вы используете maven, просто установите область действия на provided.

person Gab    schedule 16.04.2013
comment
он по-прежнему сталкивается с той же проблемой ‹dependency› ‹groupId›com.oracle‹/groupId› ‹artifactId›ojdbc6‹/artifactId› ‹version›11.2.0.3‹/version› ‹scope›provided‹/scope› ‹/dependency › - person user2093576; 16.04.2013
comment
ах, ну честно я не знаю так. разве у вас нет транзитивной зависимости где-нибудь? - person Gab; 16.04.2013
comment
На самом деле мне нужно создать - StructDescriptor.createDescriptor(SOMETHING, con); но, поскольку это из утилиты oracle, я не могу передать соединение как соединение sql. Поэтому мне нужно преобразовать T4CCon в Oracle.. и кастинг создает проблему.. - person user2093576; 17.04.2013
comment
Убедились ли вы, что реализация драйвера сервера и веб-приложения точно такая же? - person Gab; 17.04.2013
comment
я настроил ojdbc6 в качестве драйвера в консоли.. Я использую JbossEAP6.. И я думаю, что Jboss использует ironjacamar.. может ли это быть проблемой? - person user2093576; 17.04.2013
comment
Если вы сами настроили источник данных, я полагаю, вы предоставили ту же библиотеку. Может быть, это может исходить от JCA, но я так не думаю. Был ли у вас OracleDriver явно указан в конфигурации DS? (‹класс-драйвера›oracle.jdbc.driver.OracleDriver‹/класс-драйвера›) - person Gab; 17.04.2013
comment
что бы мы ни настроили в консоли сервера.. это отображается в stanalone.xml - person user2093576; 17.04.2013
comment
т.е. - ‹источник данных jta=false jndi-name=java:/apps pool-name=apps enabled=true use-ccm=false› ‹connection-url›jdbc:oracle:thin:@x‹/connection-url› ‹драйвер -class›oracle.jdbc.OracleDriver‹/драйвер-класс› ‹драйвер›ojdbc6.jar‹/драйвер› - person user2093576; 17.04.2013
comment
Да .. мне пришлось удалить банку OJDBC6 .. Не было необходимости развертывать ее отдельно от консоли сервера Jboss .. Спасибо, Габ .. ты попал в яблочко, когда сказал, что должна быть проблема с загрузкой классов, поскольку реализация извлеченного драйвера загружается загрузчиком общего класса, и вы пытаетесь привести его к классу, загруженному загрузчиком классов веб-приложения. Спасибо, бро.. ты спасаешь жизнь.. - person user2093576; 17.04.2013