在Jboss AS 5.1中,我们在jboss.xml中配置了一些事务超时(例如1000秒),用于我们的ejbs。
问题是,对于长时间运行的查询,事务在1000秒后回滚,但应用程序仍在等待查询返回(例如1200秒后)。
是否有可能在1000秒后停止查询并返回响应。
我们正在使用带有jboss 5.1.0 GA的oracle数据库
答案 0 :(得分:1)
问题是,对于长时间运行的查询,事务在1000秒后回滚但是 应用程序仍在等待查询返回。
事务超时限制的目的是避免长时间运行的事务锁定数据库资源 可接受的一段时间。 无法保证执行业务逻辑的线程在中断时会被中断 事务超时到期。
是否有可能在1000秒后停止查询并返回响应。
我认为您需要的是将查询执行与客户端分离,为此,您可以异步执行查询。
从java 6开始,这可以使用asynchronous method invocation来实现。 这个想法是将查询公开为异步服务。一旦调用了服务(查询),客户端就不需要等待查询完成。请注意,尽管Query以异步方式执行,但保持超时限制仍很重要。