2013-01-15 48 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代碼本身中看到映射。 –

相關問題