4
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
4

1 回答 1

5

AFAIK T4CConnection 应该实现 oracle.jdbc.OracleConnection。恕我直言,您有 2 个驱动程序实现,一个在应用程序服务器上,一个在您的项目依赖项中,必须存在类加载问题,因为检索到的驱动程序实现由共享类加载器加载,并且您尝试将其转换为由 webApp 加载的类类加载器。

您可以确保您的 web-app 依赖项与服务器提供的实现相同,或者在打包时从 web 应用程序中排除依赖项。

如果您使用的是 maven,只需将范围设置为provided.

于 2013-04-16T11:58:25.183 回答