如何获取UnexpectedRollbackException的SQL错误原因
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何获取UnexpectedRollbackException的SQL错误原因,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2535字,纯文字阅读大概需要4分钟。
内容图文
![如何获取UnexpectedRollbackException的SQL错误原因](/upload/InfoBanner/zyjiaocheng/904/4b3e2895b7374432950c24d29f0d6c65.jpg)
我的服务“duplicateContract”上有hibernate的回滚异常
Caused by: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy128.duplicateContracts(Unknown Source)
at com.test.server.rpc.SrvContractImpl.duplicateContracts(SrvContractImpl.java:699)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
... 34 more
Caused by: javax.transaction.RollbackException
at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:329)
at org.objectweb.jotm.Current.commit(Current.java:485)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
... 47 more
问题是,我只是无法调试,在某处有持久对象的错误,但我没有线索(它不是超时或缺少@Transactional).如何获得此异常的更多详细信息? (也许在oracle日志的某个地方?但在哪里?).
解决方法:
我检查了JOTM源代码,令我惊讶的是,they don’t propagate the original exception.
try {
propagateCtx = false;
term.commit(true);
propagateCtx = true;
} catch (TransactionRolledbackException e) {
Current.getCurrent().forgetTx(getXid());
if (TraceTm.jta.isDebugEnabled()) {
TraceTm.jta.debug("Commit distributed transaction -> rolled back!");
}
localstatus = Status.STATUS_ROLLEDBACK;
throw new RollbackException();
}
...
JOTM项目开发seems to have stopped(最后两个版本可追溯到2006年和2010年),因此您应该更好地检查Narayana,Atomikos或Bitronix.
内容总结
以上是互联网集市为您收集整理的如何获取UnexpectedRollbackException的SQL错误原因全部内容,希望文章能够帮你解决如何获取UnexpectedRollbackException的SQL错误原因所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。