长时间运行的查询中的Jboss 5 EJB 2事务超时

时间:2014-05-02 10:30:45

标签: transactions jboss5.x

在Jboss AS 5.1中,我们在jboss.xml中配置了一些事务超时(例如1000秒),用于我们的ejbs。

问题是,对于长时间运行的查询,事务在1000秒后回滚,但应用程序仍在等待查询返回(例如1200秒后)。

是否有可能在1000秒后停止查询并返回响应。

我们正在使用带有jboss 5.1.0 GA的oracle数据库

1 个答案:

答案 0 :(得分:1)

  

问题是,对于长时间运行的查询,事务在1000秒后回滚但是    应用程序仍在等待查询返回。

事务超时限制的目的是避免长时间运行的事务锁定数据库资源 可接受的一段时间。 无法保证执行业务逻辑的线程在中断时会被中断 事务超时到期。

  

是否有可能在1000秒后停止查询并返回响应。

我认为您需要的是将查询执行与客户端分离,为此,您可以异步执行查询。

从java 6开始,这可以使用asynchronous method invocation来实现。 这个想法是将查询公开为异步服务。一旦调用了服务(查询),客户端就不需要等待查询完成。请注意,尽管Query以异步方式执行,但保持超时限制仍很重要。