2013-01-15 45 views
1

我运行的JBoss AS 4.2和Java 1.6和我的问题如下工作: 我们的应用程序分发作为一个耳朵和含有一些servlet的战争。这些servlet调用所需的EJB来进行一些处理,然后返回结果。超时在JBoss

我正在寻找一种方法来确定一个超时,这情况下的处理花费了太多的时间,它会直接返回,结束处理(处理涉及几个EJB)的。

我可以使用ThreadLocal的,并添加一些代码,将在每个方法的开始检查它是​​否超出了时间 - 但有一些其他的机制,我不加入这样的代码,以我的应用程序可以使用吗?

任何想法/参考将是好的。

回答

1

可能有不同的方式,但第一件事对正在添加我的脑海里根据您的requiremens是拦截器。

所以你会拦截所有的问题(可能是长时间接听电话),并在情况下,抛出异常超过了这个时间。

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

为了得到一些想法,就有什么拦截器有能力,请参见:http://www.adam-bien.com/roller/abien/entry/interceptors_ejb_3_for_absolute

该方案的主要优点是,你会从你的经营业务逻辑有超时功能(在拦截器)清晰的分离(在EJB中)。

+0

非常感谢你,这会做到这一点。只需要将拦截器注释添加到我的EJB。 我的电话是同步的,所以我会使用它。 –

+0

正确,您可能拥有的另一个优点是xml配置的可能性(至少在我们使用JBoss + JBoss AOP时它适用于我们),甚至不需要更改EJB逻辑,映射规则通常是单行问题在XML中。另一方面,你不会在EJB代码本身中看到映射。 –

相关问题