java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 não pode ser convertido

Versão do aplicativo: JBoss 7.0.0, Oracle 11g (ojdbc6.jar) e versão JDK 6

Eu tenho um problema quando estou tentando inserir o valor para o tipo de dados CLOB usando a function CLOB.createTemporary , obtendo a exceção abaixo.

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

Depois de pesquisar em vários fóruns, não encontrou nenhuma solução. https://forums.oracle.com/forums/thread.jspa?threadID=279238

As etapas básicas necessárias para implantar um arquivo WAR e configurar a configuração do pool de drivers oracle do JBoss estão concluídas. Mas ainda não é possível passar por esse problema.

Por favor, forneça uma solução para corrigir este problema.

Eu resolvi meu problema com a abordagem abaixo.

Resumo: O carregador de classs não deve carregar o driver do Oracle a partir do servidor lib / modules e no archive da Web (arquivo WAR). Mantenha o driver oracle apenas no servidor lib (JBoss 7 ver).

JBoss 7:

  • Criado um novo arquivo descritor de implantação do JBoss (jboss-deployment-structure.xml)

    1. Atualizado o módulo iron (ironjacamar-jdbc-1.0.3.Final.jar) no arquivo de estrutura de implementação do jboss
    2. Criado o ojdbc6.jar como módulo na estrutura do JBoss 7 Atualizado o módulo objbc no arquivo de estrutura de implantação do jboss
    3. Exemplo:

               

Módulo da Web: – Removido o arquivo ojdbc6.jar do archive da Web (arquivo WAR)

Se você encontrar algum problema na solução, por favor me avise.

O que está acontecendo aqui é que o JBoss envolve a conexão oracle (oracle.jdbc.OracleConnection) com a sua própria (org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6). Você precisa chamar #getUnderlyingConnection () para obter a conexão subjacente.

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

No entanto, pergunto-me se o seguinte não funcionaria tão bem no seu caso.

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

Tem um problema semelhante em um aplicativo Rails com Jruby 1.7.2, JBoss 7.1 e Oracle (adaptador oracle_enhanced)

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

Essa solução funcionou para mim.

Eu coloquei o jboss-deployment-structure.xml no diretório config / do aplicativo rails e atualizei a configuração do warbler para include o arquivo no arquivo war:

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

Depois de implantar tudo funcionou bem … Thx muito.

Intereting Posts