websphere错误备忘录
程序员文章站
2022-03-11 10:35:53
...
项目已经上线,昨天客户发现一个问题,某个操作取消不了,查看一下log,系统是websphere5.x,发现以下的异常:
E WLTC0033E: 在清除未解析 LocalTransactionContainment 时,资源 jdbc/oa回滚。
[07-1-15 17:37:09:280 CST] 57961377 LocalTranCoor E WLTC0032E: 一个或多个资源回滚。一个未解析的 LocalTransactionContainment 有一个未解析的回滚操作。
[07-1-15 17:37:09:280 CST] 57961377 WebAppTransac E WTRN0043I: 由于 setRollbackOnly,本地事务回滚。
[07-1-15 17:37:09:296 CST] 57961377 WebGroup E SRVE0026E: [Servlet 错误]-[LocalTransaction rolled-back due to setRollbackOnly]:com.ibm.ws.LocalTransaction.RolledbackException
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java(Compiled Code))
at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java(Compiled Code))
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java(Compiled Code))
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java(Compiled Code))
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
查了下代码,一开始没发现有什么问题,不过是4,5个增删操作(两张表以上)。把错误信息输入google搜索,挺多人碰到这个错误,有的说是websphere的bug,有的说要把AutoCommit设置为true.
websphere的事务处理确实有bug,不过我们已经打过补丁,把AutoCommit设置为true的话,与我们所需要的效果不同,毕竟需要这些操作在同一个事务内。昨天查了一个晚上没找到原因,今天一段一段地调试代码,让我发现问题了:
conn = ConnectionManager.getConnection();
conn.setAutoCommit(false);
在conn.commit()前,我进行了一个判断:
if(....){
return;
}
conn.commit
直接return,导致后面的conn.commit()没有执行,事务不完整。修改成:
if(....){
...
conn.commit();
return;
}
所以这个异常的出现,很有可能是你的事务处理有问题,那条教训还是很有用的:一个方法最好不要有多个return语句。
E WLTC0033E: 在清除未解析 LocalTransactionContainment 时,资源 jdbc/oa回滚。
[07-1-15 17:37:09:280 CST] 57961377 LocalTranCoor E WLTC0032E: 一个或多个资源回滚。一个未解析的 LocalTransactionContainment 有一个未解析的回滚操作。
[07-1-15 17:37:09:280 CST] 57961377 WebAppTransac E WTRN0043I: 由于 setRollbackOnly,本地事务回滚。
[07-1-15 17:37:09:296 CST] 57961377 WebGroup E SRVE0026E: [Servlet 错误]-[LocalTransaction rolled-back due to setRollbackOnly]:com.ibm.ws.LocalTransaction.RolledbackException
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java(Compiled Code))
at com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java(Compiled Code))
at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java(Compiled Code))
at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java(Compiled Code))
at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
查了下代码,一开始没发现有什么问题,不过是4,5个增删操作(两张表以上)。把错误信息输入google搜索,挺多人碰到这个错误,有的说是websphere的bug,有的说要把AutoCommit设置为true.
websphere的事务处理确实有bug,不过我们已经打过补丁,把AutoCommit设置为true的话,与我们所需要的效果不同,毕竟需要这些操作在同一个事务内。昨天查了一个晚上没找到原因,今天一段一段地调试代码,让我发现问题了:
conn = ConnectionManager.getConnection();
conn.setAutoCommit(false);
在conn.commit()前,我进行了一个判断:
if(....){
return;
}
conn.commit
直接return,导致后面的conn.commit()没有执行,事务不完整。修改成:
if(....){
...
conn.commit();
return;
}
所以这个异常的出现,很有可能是你的事务处理有问题,那条教训还是很有用的:一个方法最好不要有多个return语句。
下一篇: 19、GIF动图显示
推荐阅读
-
清除SQL SERVER错误日志出现操作系统错误的解决方法
-
在SQL Server的try...catch语句中获取错误消息代码的的语句
-
MySQL server has gone away错误提示解决方法
-
win7系统开机搜狗应用程序错误(0xc0000409)导致电脑死机
-
Photoshop CS6error16错误怎么解决 轻轻松松摆平它
-
用Rational Rose逆向工程(java)生成类图(教程和错误解决)
-
python学习笔记之调用eval函数出现invalid syntax错误问题
-
SQLserver2000 企业版 出现"进程51发生了严重的异常"错误的处理方法
-
Win10专业版错误代码0xc0000225在吗修复?
-
win7旗舰版winmgmt.exe文件错误的原因以及解决办法