当前位置: 代码迷 >> Web前端 >> weblogic配置多个数据源,程序通过jndi连接不同数据源,数据源切换时出现的有关问题
  详细解决方案

weblogic配置多个数据源,程序通过jndi连接不同数据源,数据源切换时出现的有关问题

热度:102   发布时间:2012-08-24 10:00:20.0
weblogic配置多个数据源,程序通过jndi连接不同数据源,数据源切换时出现的问题。

Caused by: java.sql.SQLException: Connection has already been created in this tx context for pool named OracleDB. Illegal attempt to create connection from another pool: uptel_login
??????? at weblogic.jdbc.jts.Driver.getExistingConnection(Driver.java:473)
??????? at weblogic.jdbc.jts.Driver.connect(Driver.java:142)
??????? at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
??????? at com.gsta.neva2.business.sqlclient.SqlClient.getConnection(SqlClient.java:135)
??????? at com.gsta.neva2.business.sqlclient.Session.getConnection(Session.java:67)
??????? at com.gsta.neva2.business.sqlclient.SqlClientSupport.select(SqlClientSupport.java:44)

?

?

当配置SqlConfig.xml下成“jndi”时,使用自身封装的sqlclient。在SqlClient.getConnection()时,程序报错:connection为刚访问完的一个数据源OracleDB,竟然不能创建另外一个连接uptel_login,

解决方法有二:

1、使用jdbc访问数据库,不会出现该情况,可能由于jdbc是每次执行完sql后就提交事务,所以前一个数据源已经“彻底关闭”。(其实封装的sqlclient在每次访问结束后都把session,con之类的关闭了(为null),就是不清楚为什么Connection 还是前一个数据源的连接)。

2、在weblogic控制台将uptel_login这个数据源配置:Honor Global Transactions为false?(默认为true)。这个值不能修改,只能在新建数据源时配置。

?

?

?

?

?

  相关解决方案