【问题标题】:Jboss 5 EJB 2 transaction timeout on long running queries长时间运行查询的 Jboss 5 EJB 2 事务超时
【发布时间】: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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多