在不知道原因的情况下如何调试问题



我们在weblogic server v10.3.2.0中面临以下异常。我们使用的是JRockit JRE 6.0。

我们在每个服务器请求中涉及大约6-7个XA数据源。当对最后一个数据源的处理刚刚开始时,我们会遇到这个异常。

请指教。

java.sql.SQLException: Unexpected exception while enlisting XAConnection 
java.sql.SQLException: Transaction rolled back: setRollbackOnly called on transaction 
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1616) 
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1503) 
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446) 
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:403) 
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364) 
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init(JtaTransaction.java:68) 
at com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.getConnection(JtaTransaction.java:131) 
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForObject(MappedStatement.java:120) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:518) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:493) 
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106) 
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:82) 

正如您所写的,在这个样本中原因是未知的。我们可以看到事务被标记为"必须回滚",可能是在出现问题时由以前的数据源。

也许你可以检查以前的日志,对于以前的数据源,找到原因?

你说这是最后一个数据源-你读过这个吗?: http://muness.blogspot.com/2005/09/distributed-transactions-and-timeouts.html .

如果您需要更多的信息,您可以将ibatis替换为一个带有黑客com.ibatis.sqlmap.engine.transaction.jta. jtattransaction .init()的版本吗?在那里添加一些日志记录,您可能会了解更多。

如果我必须猜测,我会说最后一个数据源没有正确配置为XA数据源,没有安装XA驱动程序,或者不支持XA。

您是否在这里做任何有趣的异常处理,将截断堆栈(捕获重新抛出,但只保留堆栈帧的顶部集合)或使用自定义异常处理库?如果你是我就放弃它。似乎应该有一个caused by:,与数据源的驱动程序相关,具有额外的较低级别堆栈,可以显示额外的信息。

如果不是这样,这是你得到的唯一信息。也许是时候把你的服务器的日志设置到debugtrace了,然后用weblogic来完成这些事情。

或者,如果你被支持,我会与你的供应商验证你的驱动程序版本/配置。如果没有,则需要跟踪文档并亲自验证。

相关内容

  • 没有找到相关文章

最新更新