0

Websphere Application Server 数据源面临一个奇怪的问题。

环境:

  • Websphere 应用服务器 (6.1)
  • Linux
  • Liferay 门户 (5.2)
  • 甲骨文 9i
  • 休眠 3.0

我们在应用程序服务器引用中部署了数据源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 与 com.ibm.ws.rsadapter.AdapterUtil.toSQLException 处的 javax.sql.ConnectionPoolDataSource 不兼容( 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 应用程序库中删除了 classes12.jar 并重新部署了应用程序并重新启动,但再次出现相同的错误。关于如何解决这个问题的任何想法?

4

3 回答 3

1

DSRA8101E: DataSource 类不能用作单阶段:ClassCastException:{0} Explanation: 如果 DataSource 类实现 ConnectionPoolDataSource,则只能将“enable2Phase”属性设置为 false。用户响应:对于 XADataSource,将“enable2Phase”设置为 true,对于 ConnectionPoolDataSource,将其设置为 false。

您是否尝试将 enable2Phase 设置为 false?

于 2009-11-08T08:39:43.517 回答
0

当我尝试使用 classes12.jar 连接到旧的 oracle 数据库时,我在 websphere 7 中遇到了同样的问题。

我的解决方案是为 websphere 应用程序 V4 数据源创建一个新的用户定义的 jdbc 提供程序(新类型的数据源将导致不兼容的问题),它将指向旧的 classes12.jar。

并使用isolate 选项隔离新的oracle 数据源(如果有的话)以防止类加载器冲突(这非常重要!)

旧的 websphere v4 数据源没有这个选项。

于 2010-07-27T09:31:18.883 回答
0

在 JDBC Provider 部分中,仅选中“隔离此资源提供程序”复选框对我有用。

于 2016-04-29T07:19:38.230 回答