【发布时间】:2016-07-29 12:53:58
【问题描述】:
我使用的服务器是 GlassFish,但是这个问题也出现在 Weblogic 上。
我的客户端机器开始一个事务,从服务器查找几个 EJB,并开始一些需要一段时间才能完成的工作。在此过程中,客户端机器死机(比如说断电)。
客户端机器打开的数据库查询永远不会关闭(因为客户端已终止),这会导致死锁和其他问题。
有没有办法检测到这个死交易并回收所有资源?
下面的伪代码示例
transaction.begin();
MyBean bean = (MyBean)ctx.lookup("MyBean");
bean.doComplicatedWorkPart1();
bean.writeResultsToTheDatabase();
// Client dies during this method (powercut), so the transaction
// is simply left hanging.
bean.doComplicatedWorkPart2();
bean.writeResultsToTheDatabase();
transaction.commit();
【问题讨论】:
标签: java ejb jndi disconnect