Java 原因未知时如何调试问题

Java 原因未知时如何调试问题,java,jdbc,weblogic-10.x,distributed-transactions,jrockit,Java,Jdbc,Weblogic 10.x,Distributed Transactions,Jrockit,我们在WebLogicServerV10.3.2.0中面临以下异常。我们正在使用JRockit JRE 6.0 我们在每个服务器请求中都有大约6-7个XA数据源。当对最后一个数据源的处理刚刚开始时,我们会遇到这个异常 请有人给我建议 java.sql.SQLException: Unexpected exception while enlisting XAConnection java.sql.SQLException: Transaction rolled back: setRollback

我们在WebLogicServerV10.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) 

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


也许您可以检查以前的日志,查找以前的数据源的原因?

您说这是最后一个数据源-您读过这个吗?:


如果您需要更多信息,是否可以将ibatis替换为被黑客攻击的com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init()版本?在那里添加一些日志记录,您可能会了解更多

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

您是否正在执行任何有趣的异常处理来截断堆栈(捕获重新抛出,但只保留堆栈帧的顶部集),或者使用自定义异常处理库?如果你是,我会放弃它。似乎应该有一个由以下原因引起的
,其中包含与数据源驱动程序相关的附加较低级别堆栈,该堆栈将显示其他信息

如果不是这样,这是你得到的唯一信息。现在可能是时候启动服务器的日志记录,使其达到
debug
trace
,并了解weblogic是如何完成任务的


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

就像你去卡内基音乐厅一样——练习,练习,练习。嗨,克里斯。你还在吗?你还感兴趣吗?我喜欢你的评论,丹尼尔。。我在过去3天一直在调试此问题:)只有3天?您在代码中添加了多少日志记录?实际上什么都没有!但很不幸,我再也看不到这个问题了。。它消失了-永远?测验。。!!!!这看起来是个有趣的线索。让我检查一下,相同的请求在本地开发人员环境中成功完成,但在开发人员服务器环境中失败:(@Krish抱歉,您将不得不调查不同之处。听起来对您来说是一项艰巨的工作:-(别忘了从这次经历中吸取教训,比如你如何用不同的代码来减少这样的问题……如果他一开始不知道问题的原因,他将如何学习用不同的代码?