2012-02-13 9 views
1

私は、Publisher/Subscriberパターンをシミュレートする2つのWebアプリケーションを作成しています。クライアントは、バックエンドのEJB Beanを介してJSF Webアプリケーションからデータベースにサブスクリプションを追加します。別のクライアントは、バックエンドの同じEJB Beanを使用して別のJSF Webアプリケーションからメッセージをパブリッシュします。このEJB Beanは、公開されたメッセージと一致するすべてのサブスクライバに通知する必要があります。私は、JMSのようなものですべての加入者に通知する方法を探しています。 JMSを使用するかどうかは関係ありませんが、JSFを使用する必要があり、通知は非同期でなければなりません。JSF WebアプリケーションへのJMSメッセージ付きサーバープッシュメッセージ

私はPush technologyCometのようなものを探していましたが、以前のpostで何かを見つけました。この例では、JMSおよびJSFと互換性のあるRichFacesを使用していますが、メッセージの受信方法またはJMSの使用方法は示されていません。私はこのpostが、RichFacesでJMSを使用しない方法を説明していますが、私はJMSを使いたいと言っていましたが、EJB Beanからメッセージを送受信するための私の唯一の解決策かもしれません。私が見つけたすべてのソリューションは、JSF Managed Beanのみを使用しますが、EJB Beanから通知を受け取る必要がある場合はどうなりますか?

+0

http://cometd.org/ – perissf

+0

あなたのサイトを見ましたが、例が見つかりません。それに取り組む前に、私はそれを評価して最良の解決策を見つけたいと思っています。私は短期間の締め切りを持っています。 – PinoSan

答えて

0

私はWebSocketsがあなたが目にしている技術だと思います。実装例はPrimePush で、PrimeFacesをご覧ください。

SEAM-JSFと組み合わせると、バッキングビーンのCDIアノテーションを使用してJMSリソースにアクセスできます。

+0

私はすでにPrimeFacesを使用していますが、PrimePushを見ましたが、この例ではManaged Beanからのみプッシュできます。 EJB Beanから公開されたメッセージを受け取る必要があります。 – PinoSan

+0

「バッキング・ビーン」ってどういう意味ですか? – PinoSan

+0

oh、afaik _backing bean_と_managed bean_は同義語です。例えば。 '@ Named'や' @ ManagedBean'です。 _EJB Beanとは何ですか? ;-) ... @ManagedBean @ Stateless'を使うことができます。 – Thor

0

このシナリオでJMSを使用するかどうかにかかわらず、最後に処理しなければならないメッセージをブロードキャストすることはできますが、発行されたメッセージを送信/処理する部分が異なります。

例:クライアントは、メッセージをJMSキュー/トピックに転送するJSFアプリケーションを使用します。別のJSFアプリケーション(JMSクライアント)は、MDBでメッセージを受信し、解析し、データベースから受信者のリストを取得し、データベースを使用してそれぞれにメッセージを割り当てます。

単純なdbデータ処理です​​べてが発生し、JMSを使用する必要はありません。任意のEJBまたはサーブレットを使用して、メッセージの処理を行うことができます。

メッセージを受け取るべきJSFアプリケーションでは、特定のユーザーに割り当てられた新しいメッセージのデータベースをポーリングするAJAXメカニズムを使用できます。

+0

私はこの解決策を考えていましたが、残念ながら私は使用できません。このプロジェクトは教授の任務です。私は彼に説明しましたが、通知を非同期にする必要があると言いました。そうしないと、パブリッシュ/サブスクライブパターンがそのアイデンティティを失います。 – PinoSan

関連する問題