2012-05-31 144 views
1

其中一個EJB類正在調用外部API &如果在一段時間延遲後出現故障,我想重試。由於管理線程不是一個好主意(Thread.sleep(1000))不推薦,有人能告訴我如何在EJB2中延遲/暫停進程一段時間嗎?謝謝。EJB2中的時間延遲

回答

0

我假設你的問題多次睡1秒是線程成功的不必要的等待時間。

而不是睡覺,你可以嘗試使用連接。

join(5000) 

將等待最多5秒鐘完成線程。如果提前結束,您的執行會恢復。如果它沒有提前結束,你的執行會在5秒後恢復。

睡眠方法使用polling技術,而連接使用修改的interrupt方案。

+0

謝謝約翰。在EJB容器Managed&Hibernate中,使用Thread?是否安全?應用程序將有15個MDB,並且每個MDB都會調用此EJB服務,只有在來自外部API的異常情況下才會有小的時間延遲。謝謝。 – user1388356

0

作爲一種解決方法,如果出現故障,那麼您可以創建一個具有適當超時持續時間的計時器,在這種情況下,計時器將是延遲持續時間。

在超時方法中,您可以再次調用EJB來進一步調用外部API。