【问题标题】:oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnectionoracle.jdbc.driver.T4CConnection 不能强制转换为 oracle.jdbc.OracleConnection
【发布时间】:2013-04-16 09:41:28
【问题描述】:
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

【问题讨论】:

  • 还有什么问题?
  • 需要从 WrappedConnectionJDK6 获取 oracle 连接 .. 但它给出了转换问题 .. 任何线索如何从 WrappedConnectionJDK6 中获取 oracle 连接?
  • JBoss 用它自己的 (org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6) 包装 oracle 连接。我正在尝试调用 #getUnderlyingConnection() 来获取底层连接。但是在将其转换为 Oracle 连接时,它给出了错误...连接转换错误

标签: jboss6.x jdbc-odbc


【解决方案1】:

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

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

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

【讨论】:

  • 它仍然面临同样的问题 com.oracleojdbc611.2.0.3提供
  • 啊,老实说我不知道​​。你在某处没有传递依赖吗?
  • 其实我需要创建——StructDescriptor.createDescriptor("SOMETHING", con);但由于它来自 oracle 实用程序,因此我无法将连接作为 sql 连接传递。所以我需要将 T4CCon 转换为 Oracle .. 并且转换出现问题..
  • 您是否确保服务器和 webapp 驱动程序实现完全相同?
  • 我已将 ojdbc6 配置为控制台中的驱动程序.. 我正在使用 JbossEAP6.. 我猜 Jboss 需要 Ironjacamar.. 这可能是问题吗?
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 2015-09-03
  • 2019-06-09
  • 2017-06-02
  • 2013-07-21
  • 2016-09-26
  • 1970-01-01
  • 2013-03-20
相关资源
最近更新 更多