我们正面临着Websphere Application Server数据源的一个奇怪问题。
环境:
我们在引用ODBC14.jar
数据源的休眠配置:
<property name="connection.datasource">jdbc/appDB</property>
<property name="jndi.class">com.ibm.websphere.naming.WsnInitialContextFactory</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.autocommit">false</property>
我们遇到以下异常:
引起:java.sql.SQLException: DSRA8101E:DataSource类不能 用作单阶段:ClassCastException: oracle.jdbc.pool.OracleConnectionPoolDataSource 与...不相容 javax.sql.ConnectionPoolDataSource at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1375) 在 com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:462) 在 com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:418) 在 org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69) 在 org.hibernate.jdbc.ConnectionManager.openConnection
我们尝试了以下解决方法 来了解 classes12.jar在WEB-INF / lib 中 哪个ORACLE驱动程序可能导致类加载与Shared / apps / lib ODBC14.jar冲突
因此从Web应用程序Lib中删除了classes12.jar并重新部署了应用程序并重新启动,但再次出现相同的错误。有关如何解决此问题的想法吗?
答案 0 :(得分:1)
DSRA8101E:DataSource类不能 用作单阶段:ClassCastException: {0}说明:'enable2Phase' 如果属性,则只能将其设置为false DataSource类实现 ConnectionPoolDataSource的。用户 响应:将'enable2Phase'设置为true 对于XADataSource或false为 的ConnectionPoolDataSource。
您是否尝试将enable2Phase设置为false?
答案 1 :(得分:0)
当我尝试使用classes12.jar连接到旧的oracle数据库时,我在websphere 7中遇到了同样的问题。
我的解决方案是为websphere应用程序V4数据源创建一个新的用户定义的jdbc提供程序(新类型数据源将使不兼容的问题失效),这将指向旧的classes12.jar。
并使用isolate选项隔离新的oracle数据源(如果有的话)以防止类加载器冲突(这非常重要!)
旧的websphere v4数据源没有此选项。
答案 2 :(得分:0)
在JDBC Provider部分中,只选中复选框“隔离此资源提供程序”对我有用。