2013-10-29 56 views
2

我有票務訂單的有狀態ejb。我想實現一個功能,如果用戶選擇門票但不支付他們,這是特定的時間段,例如10分鐘。所以我實現了當用戶提交選擇票據時,他們從可用票據的數據庫中刪除。現在我需要設置一個計時器,在超時時間檢查付款是否已完成(可能通過數據庫),如果沒有 - 將返回數據庫的票據。解決方案爲具有狀態ejb的TimerService

我會這樣做在ejb票務訂單,但它是一個有狀態的,和EJBTimer服務不支持有狀態的bean。你會如何建議去做?

是否有可能委託處理超時的任務來分離無狀態bean?在這種情況下,它只會創建用@Timeout註釋的計時器和方法。我不知道如何將選定票據的所有細節傳遞給無狀態bean,因爲它們不能保存爲bean屬性(導致bean無狀態)。我只能將它們傳遞給創建計時器的方法,但必須在超時時調用的方法中使用它們。

P.S.我正在使用glassfish 3.1

謝謝你的幫助。

回答

2

您可以在創建計時器時通過傳遞信息將詳細信息傳遞給超時方法。

您可以傳遞序列化對象 - 適當的數據結構來存儲票證信息,或者可以改變現有類來實現接口。

createTimer(long duration, Serializable info)

現在,超時後以後,你可以通過Timer對象上調用getInfo()獲取的超時方法此info對象。

[還有其他方法可以用不同的簽名來創建定時器]

相關問題