在WebSphere环境下如果没有正确处理数据库连接,SystemOut.log文件中会打出以下错误:
[06-5-9 17:02:07:458 GMT+08:00] 1ae9f948 SharedPool I J2CA0086W: 在本地事务包含边界中使用的资源 jdbc/unicall 的可分享连接 MCWrapper id 1df4f943 Managed connection com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl@17feb94d State:STATE_TRAN_WRAPPER_INUSE
在出现大量这种信息后,系统可能会宕机.
详细可参见IBM文档说明。
WebSphere使用了本地事务管理的规则,在Websphere环境下一般要按照如下的规则编写数据库处理逻辑
use connection
close connection
commit transaction
如果使用了以下方式则有可能会导致死锁
get con1;
use con1;
get con2; // a new connection is created.
// we can't reuse con1 because
// it hasn't been closed.
use con2;
close con1;
close con2;
解决办法有两种:
增加连接池大小
严格按照LocalTransaction的规范编写程序
在WebSphere环境中,不当的数据库连接管理可能导致系统错误甚至崩溃。本文探讨了这些问题的根源,尤其是在本地事务边界内资源使用不当的情况,并提出了两种解决方案:一是增加连接池的大小;二是遵循LocalTransaction规范进行编程。
20

被折叠的 条评论
为什么被折叠?



