2012-02-13 51 views
1

我正在編寫兩個模擬發佈者/訂閱者模式的Web應用程序。客戶端通過後端的EJB bean將JSF Web應用程序中的訂閱添加到數據庫中。另一個客戶端然後從另一個JSF Web應用程序發佈消息,在後端使用相同的EJB bean。這個EJB bean需要通知與發佈的消息相匹配的所有訂閱者。我正在尋找一種方式來通知所有用戶使用類似JMS的東西。如果我使用JMS或不使用JMS,但必須使用JSF,並且通知必須是異步的。將JMS消息傳遞到JSF Web應用程序的服務器推送消息

我正在尋找像Push technologyComet之類的東西,我在之前的post中發現了一些東西。此示例使用RichFaces,它與JMS和JSF兼容,但不顯示如何接收消息或使用JMS。我還發現這個post解釋瞭如何不使用JMS和RichFaces,但就像我說我想使用JMS,也許這是我從EJB bean發送/接收消息的唯一解決方案。我發現的所有解決方案都只使用JSF託管bean,但是如果您必須從EJB bean接收通知,該怎麼辦?

+0

退房http://cometd.org/ – perissf 2012-02-13 14:29:30

+0

我看過你的網站,但我不能找到一個例子。在開始工作之前,我想評估它並找到最佳解決方案。我有一個很短的時間期限。 – PinoSan 2012-02-13 16:03:25

回答

0

我覺得WebSockets是你正在尋找脫穎而出的技術。看看PrimePush 的執行PrimeFeces

您可以SEAM-JSF結合這在你的支持豆通過CDI註解訪問JMS資源。

+0

我已經在使用PrimeFaces,我查看了PrimePush,但在該示例中,您只能從託管bean推送。我需要接收從EJB bean發佈的消息。 – PinoSan 2012-02-13 14:20:37

+0

你是什麼意思「支持豆」? – PinoSan 2012-02-13 15:38:40

+0

哦,afaik _backing bean_和_managed bean_是同義詞。例如。 '@ Named'或'@ ManagedBean'。什麼是_EJB Bean_? ;-) ...你可以使用'@ManagedBean @ Stateless'。 – Thor 2012-02-13 15:52:20

0

您可以使用JMS爲,但廣播,你將不得不自己處理所以在最後,如果你使用JMS對於這種情況還是沒有,只是部分發送/處理所發佈的消息將有所不同也沒關係消息。

示例:客戶端使用將消息轉發給JMS隊列/主題的JSF應用程序。另一個JSF應用程序(JMS客戶端)將使用MDB接收消息,解析消息並從數據庫中檢索收件人列表,並再次使用數據庫將消息分配給每個消息。

正如你所看到的一切都發生與簡單的數據庫數據處理和使用JMS是沒有必要的,你可以使用任何EJB或者Servlet做消息的處理你。

在應該接受你可以使用AJAX機制輪詢分配給特定用戶有新郵件數據庫消息的JSF應用程序。

+0

我在想這個解決方案,但不幸的是我無法使用它。這個項目是我教授的任務。我向他解釋過,但他說我需要保持異步通知,否則發佈/訂閱模式將失去它的身份。 – PinoSan 2012-02-13 15:38:05

相關問題