【发布时间】:2014-05-02 10:30:44
【问题描述】:
在 Jboss AS 5.1 中,我们在 jboss.xml 中为我们的 ejb 配置了一些事务超时(例如 1000 秒)。
问题是对于长时间运行的查询,事务在 1000 秒后回滚,但应用程序仍在等待查询返回(例如 1200 秒后)。
是否有可能停止查询并在 1000 秒后返回响应。
我们在 jboss 5.1.0 GA 中使用 oracle 数据库
【问题讨论】:
标签: transactions jboss5.x
在 Jboss AS 5.1 中,我们在 jboss.xml 中为我们的 ejb 配置了一些事务超时(例如 1000 秒)。
问题是对于长时间运行的查询,事务在 1000 秒后回滚,但应用程序仍在等待查询返回(例如 1200 秒后)。
是否有可能停止查询并在 1000 秒后返回响应。
我们在 jboss 5.1.0 GA 中使用 oracle 数据库
【问题讨论】:
标签: transactions jboss5.x
问题是对于长时间运行的查询,事务在 1000 秒后回滚,但是 应用程序仍在等待查询返回。
事务超时限制的目的,是为了避免长时间运行的事务锁定数据库资源超出 可接受的时间段。 不保证执行业务逻辑的线程会被中断 事务超时到期。
是否有可能停止查询并在 1000 秒后返回响应。
我认为您需要将查询执行与客户端分离,为此您可以异步执行查询。
从 java 6 开始,这可以使用asynchronous method invocation 来实现。 这个想法是将查询公开为异步服务。一旦服务(查询)被调用,客户端不需要等待查询完成。请注意,尽管查询是异步执行的,但保持超时限制很重要。
【讨论】: