java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.WrapperDataSource cannot be cast to javax.sql.DataSource
java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.WrapperDataSource cannot be cast to javax.sql.Context
问题场景:
本来项目正常,后来添加了一个新的数据源,项目同时使用两个oracle数据源,分别连接两个数据库。于是启动的时候就报上述错误。
解决办法:
1、检查jboss的deploy/lib下面和项目web-inf/lib下面的jdbc驱动是否一致。
2、排除1的情况下,检查数据源的配置
oracle-ds.xml :
<datasources>
<local-tx-datasource>
<jndi-name>OracleDS</jndi-name>
<connection-url>jdbc:oracle:thin:@10.193.129.24:1521:orcl</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>nfdwkf</user-name>
<password>nfdwkf</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>ArchiveOracleDS</jndi-name>
<connection-url>jdbc:oracle:thin:@10.193.129.23:1521:orcl</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>nfdwgd</user-name>
<password>nfdwgd</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
jboss-web.xml :
<resource-ref>
<res-ref-name>jdbc/cpf/type4</res-ref-name>
<jndi-name>java:/OracleDS</jndi-name>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/cpf/archive</res-ref-name>
<jndi-name>java:/ArchiveOracleDS</jndi-name>
</resource-ref>
web.xml :
<resource-ref>
<res-ref-name>jdbc/cpf/type4</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/cpf/archive</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意数据源的名字,不要有节点包含关系。我一开始第二个数据源的名字是jdbc/cpf/type4/archive,就一直报上面的java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.WrapperDataSource cannot be cast to javax.sql.Context 异常。查了很久也没查出来原因。