2009-03-11 18 views
1

ちょっと!私はJava EEとStackowerflowの両方に比較的新しいです.-)Ejb 3、ステートフルセッションBeanと連携するメッセージ駆動型Bean?

どのような状態変更でもJavaメッセージを送信するデバイスがたくさんあります。これらのデバイスは、通常、約30〜90分の間隔でアクティブです。各イベントメッセージには、イベントの詳細に加えてデバイスIDが含まれています。

私のアプリケーション内のCentralは、これらのイベントにサブスクライブするメッセージ駆動型Beanです。イベントが発生するたびに、デバイスに関する情報を検索するためにデータベースにアクセスする必要があります。

各アクティブデバイスにステートフルセッションBeanを関連付けることができたら、本当に素晴らしいでしょう。これがWebアプリケーションであれば、HTTPセッションを使用してステートフルBeanへのハンドルまたは参照を格納することになりました(私は正しいのですか?)。これを私のメッセージbeanからアーカイブする方法はありますか?

+0

これらのデバイスのデータは変更可能ですか?デバイスが変更された場合、あなたは何をしていますか?ビジネスロジックで保持するエンティティの状態は、データベースの表現とは異なります。私の意見では、データは1つの場所だけ保持する必要があります。 – Timo

答えて

2

あなたが説明したように行えないことを除いて、いいかもしれません。 MDB(およびSLSB)は定義によってステートレスなので、呼び出し中にのみ会話を保持することは安全です。

最終的に仕様を破ってどこかに(おそらくMDB自体に)静的な属性を作成することができますが、これは移植性がなく、スケーラビリティでもありません。

私の提案は、JPAレベルでキャッシュを有効にすることです(詳細については、永続性プロバイダに参照してください)ので、必要なデータをすばやく(本当に高速に)検索できます。これはポータブルかつクラスタフレンドリです。それが私のプロジェクトでやっているのです。私はとても満足しています。

希望します。

0

私は、特定の製品を推奨するのは快適ではありませんが、このようなニーズを抱くテラコッタのサーバーではありませんか?

関連する問題