首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在原因未知的情况下调试问题

如何在原因未知的情况下调试问题
EN

Stack Overflow用户
提问于 2011-08-29 21:27:52
回答 3查看 9.2K关注 0票数 5

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

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

请给我一些建议。

代码语言:javascript
运行
复制
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) 
EN

回答 3

Stack Overflow用户

发布于 2011-08-29 21:32:53

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-08-29 22:15:14

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

如果你需要更多信息,你能用黑客com.ibatis.sqlmap.engine.transaction.jta.JtaTransaction.init()的版本替换ibatis吗?在那里添加一些日志记录,您可能会知道更多。

票数 1
EN

Stack Overflow用户

发布于 2011-08-30 01:31:07

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

你是否在这里做一些有趣的异常处理,会截断堆栈(捕捉重新抛出,但只保留最上面的一组堆栈框架),或者使用自定义异常处理库?如果你是,我会放弃它。似乎应该有一个与数据源的驱动程序相关的caused by:,它具有额外的低级堆栈,可以揭示额外的信息。

如果不是这样,这是你得到的唯一信息。也许是时候让你的服务器登录到debugtrace上,并开始了解weblogic是如何完成工作的了。

或者,如果您受支持,我会向您的供应商验证您的驱动程序版本/配置。如果不是,您需要查找文档并自己验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7230768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档