2

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2013-01-15T16:37:46.040 回答