java.lang.ClassCastException:org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6无法强制转换

时间:2012-04-20 13:55:59

标签: java jboss oracle11g spatial jdk1.6

应用程序版本: JBoss 7.0.0,Oracle 11g(ojdbc6.jar)和JDK 6版本

当我尝试使用CLOB.createTemporary函数插入CLOB数据类型的值时遇到问题,得到以下异常。

java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection

在多个论坛中搜索后,没有找到任何解决方案。 https://forums.oracle.com/forums/thread.jspa?threadID=279238

完成部署WAR文件和配置JBoss oracle驱动程序池配置所需的基本步骤。但是,仍然无法解决这个问题。

请提供解决方案以解决此问题。

3 个答案:

答案 0 :(得分:7)

我用以下方法解决了我的问题。

摘要:类加载器不应从服务器lib / modules和Web归档(WAR文件)加载Oracle驱动程序。将oracle驱动程序仅保留在服务器lib(JBoss 7 ver)中。

JBoss 7:

  • 创建了一个新的JBoss部署描述符文件(jboss-deployment-structure.xml)

    1. 更新了jboss部署结构文件中的(ironjacamar-jdbc-1.0.3.Final.jar)铁模块
    2. 在JBoss 7结构中创建了ojdbc6.jar作为模块 更新了jboss部署结构文件中的objbc模块
    3. 示例:

      <jboss-deployment-structure> 
          <deployment>
              <dependencies>
                  <module name="org.jboss.ironjacamar.jdbcadapters" slot="main"/>
                  <module name="com.oracle.ojdbc6" slot="main"/>
              </dependencies>
          </deployment> 
      </jboss-deployment-structure>
      

网络模块: - 从Web存档(WAR文件)中删除了ojdbc6.jar文件

如果您在解决方面遇到任何问题,请告知我们。

答案 1 :(得分:1)

这里发生的事情是JBoss将oracle连接(oracle.jdbc.OracleConnection)与它自己的连接(org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6)包装起来。您必须调用#getUnderlyingConnection()来获取底层连接。

WrappedConnection wrapped = (WrappedConnection) conn;
CLOB clob = CLOB.createTemporary(wrapped.getUnderlyingConnection(), true, CLOB.DURATION_SESSION);

但是,我问自己,在你的情况下,以下内容是否会起作用。

ps.setClob(4, new StringReader(data));

答案 2 :(得分:0)

在使用Jruby 1.7.2,JBoss 7.1和Oracle(oracle_enhanced适配器)的Rails应用程序中遇到类似的问题

Java::JavaLang::ClassCastException: oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection

这个解决方案对我有用。

我将jboss-deployment-structure.xml放在rails app的config /目录中,并更新了warbler配置以将文件包含在war文件中:

config.webinf_files += FileList["config/jboss-deployment-structure.xml"]

部署后一切正常......很多。