Websphere Application Server数据源

时间:2009-11-05 01:09:52

标签: database oracle hibernate jdbc websphere-6.1

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

环境:

  • Websphere Application Server(6.1)
  • 的Linux
  • Liferay Portal(5.2)
  • Oracle 9i
  • Hibernate 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   与...不相容   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并重新部署了应用程序并重新启动,但再次出现相同的错误。有关如何解决此问题的想法吗?

3 个答案:

答案 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部分中,只选中复选框“隔离此资源提供程序”对我有用。