2012-04-14 116 views
0

我不知道如何從MySatefulSessionBean發送消息(javax.jms.Message)到MySingletonBean然後MyMessageDrivenBean。我正在使用Netbeans,所以我可以右鍵點擊Singleton Bean的源代碼並選擇發送JMS消息如何從會話bean將消息發送到消息驅動Bean間接

但是,這將使在MySingletonBean生成的消息被髮送到MyMessageDrivenBean當我真正想要做的是消息從MySatefulSessionBean轉發到MyMessageDrivenBean

即,而不是創建在MySingleTonBean新的消息併發送它MyMessageDrivenBean進行處理,我想要MySatefulSessionBean實例化以通過MyMessageDrivenBean的的onMessage(消息MSG)方法來處理該消息。

由於個人原因,我無法讓MySatefulSessionBean直接與發送消息發送到MyMessageDrivenBean;所以消息應該間接地發送到MyMessageDrivenBean

您能否告訴我如何使用它?提前

回答

1

實際上並沒有在有狀態會話bean中準備消息,但只准備實際的有效負載。

使用此有效內容作爲方法參數調用您的單例,然後將JMS消息創建爲單例的內部細節。

+0

謝謝邁克,聽起來很好的計劃;我會看看,如果我能意識到你爲什麼建議! – Abraham 2012-04-15 15:55:53

+1

我的意思是「什麼」,對於錯字感到抱歉。 – Abraham 2012-04-15 17:40:21

1

謝謝,你是不是應該在其他EJB則消息驅動Bean接收JMS消息。所以你的MySingletonBean不應該接收JMS消息。如果你設法實現它,你會得到各種瘋狂的錯誤(因爲EJB對象生命週期規則)。

所以重新考慮你的建築。

+0

感謝您的回答PiotrKochański。但事情是,我沒有收到MySingletonBean中的消息。我只是使用它來爲從MySatefulSessionBean發送的ObjectMessage添加時間戳,然後將其轉發給MyMessageDrivenBean。 – Abraham 2012-04-14 21:53:57

+0

「轉發信息」是什麼意思?如果沒有在MySingletonBean中收到消息,這是可能的 – 2012-04-14 22:10:58

+0

是的,這也讓我感到困惑。但我給出的規範是,每個獨立客戶端應該使用有狀態會話Bean(MySatefulSessionBean)將消息發送到聊天管理器(MySingletonBean)。然後,聊天管理器向MyMessageDrivenBean處理的隊列發送消息。
獨立客戶端不會發送javax.jms.Message,但會發送一些Serializable對象,這就是爲什麼我要將ObjectMessage發送到MyMessageDrivenBean。 – Abraham 2012-04-14 22:18:13