【问题标题】:timeout a job on jbossjboss上的工作超时
【发布时间】:2013-01-15 16:29:46
【问题描述】:

我正在使用 java 1.6 运行 jboss AS 4.2,我的问题如下: 我们的应用程序被分发为包含一些 servlet 的 ear 和 war。 这些 servlet 调用所需的 EJB,这些 EJB 进行一些处理,然后返回结果。

我正在寻找一种方法来确定超时,以防处理花费太多时间,它只会返回并结束处理(处理涉及多个 EJB)。

我可以使用 ThreadLocal 并添加一些代码,这些代码将在每个方法的开头检查它是否超过了时间 - 但是我可以使用其他一些机制而不向我的应用程序添加此类代码吗?

任何想法/参考都会很好。

【问题讨论】:

    标签: java jboss


    【解决方案1】:

    可能有不同的方法,但根据您的要求,我首先想到的是拦截器。

    这样您就可以拦截所有有问题的(可能是长时间的通话)并在超出时间时抛出异常。

    是的,threadlocal 可以完成保持启动时间的工作(如果您不使用异步无状态会话 bean 调用)。

    要了解拦截器的能力,请参阅:http://www.adam-bien.com/roller/abien/entry/interceptors_ejb_3_for_absolute

    此解决方案的主要优点是您可以将超时功能(在拦截器中)与业务逻辑(在 EJB 中)明确分离。

    【讨论】:

    • 非常感谢,这样就可以了。只需将拦截器注释添加到我的 EJB 中。我的调用是同步的,所以我会使用它。
    • 正确,您可能拥有的另一个优势是 xml 配置的可能性(至少当我们使用 JBoss + JBoss AOP 时它对我们有用)您甚至不需要更改 EJB 逻辑和映射规则通常是 XML 中的一行问题。另一方面,您不会在 EJB 代码本身中看到映射。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2021-02-02
    • 1970-01-01
    相关资源
    最近更新 更多