检测EJB数据源客户端断开连接

时间:2016-07-29 12:53:59

标签: java ejb jndi disconnect

我使用的服务器是GlassFish,但Weblogic上也会出现此问题。

我的客户端机器开始一个事务,从服务器中查找几个EJB,并开始一些需要一段时间才能完成的工作。在此过程中,客户端计算机终止(假设是一个powercut)。

客户端计算机打开的数据库查询永远不会关闭(因为客户端已终止),这会导致死锁和其他问题。

有没有办法检测这个死信息并收回所有资源?

下面的伪代码示例

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();

1 个答案:

答案 0 :(得分:0)

IIRC这是不容易处理的。这取决于您使用的数据库,您需要使用数据库管理来查找挂起的事务。

为了拥有一个更可靠的环境,你应该为此创建一个服务器端bean,在这里,进程在某个地方更不可能死亡或松散连接。

相关问题