2

weblogicでシングルトンを作成するための良い解決策を見つけようとしています.

現在、クラスター環境と単一サーバーの両方にデプロイされている耳があります。耳の中には、何らかの状態を保持するシングルトンがあります。その状態を 2 つのサーバーに複製すると、正しくない動作が発生する可能性があります。現在、そのシングルトンは、最大 1 としてデプロイされた MDB を介してのみアクセスされます。その MDB はトピックをリッスンしています。トピックは分散されていないため、1 つのサーバーにしかトピックがありませんが、配置に関して好ましくない警告が表示されます。

私たちはいくつかの解決策を検討しました:

  • Weblogic の SingletonService。正常に動作しますが、クラスターでのみ動作し、アプリケーションの単一サーバー バージョンと開発者サンドボックスで問題が発生します。
  • シングルトンと周囲のコード用に別の ear を作成し、別の管理対象サーバーにデプロイします。これは必要に応じて機能すると予想されますが、シングルトンを周囲のコードから切り離し、多くの機能をリモート アクセスに公開する必要があるため、かなりの量の作業が必要になります。
  • シングルトンをステートレスにし、シングルトン要件を削除します。動作するはずですが、多くの作業が必要になります

問題を解決する他の方法はありますか? 多分JMSのトリック?

4

3 に答える 3

2

パベル、あなたはすでに多くの素晴らしいアイデアを自分で思いついているようです。カウントを行うには、シングルトン クロス クラスターが必要なようです。必要なシングルトンは、インメモリ シングルトンである必要はありません。カウントをデータベース テーブルに移動できます。データベース テーブルは、シングルトンとして機能できます。カウントが増加するたびに、テーブル内のカウント フィールドを更新するために jdbc 呼び出しを行います。

于 2013-02-16T07:36:32.080 に答える
1

共有ライブラリの作成は機能しますか?共有ライブラリはシングルトンを持つことができます。

http://docs.oracle.com/cd/E11035_01/wls100/programming/libraries.html#wp1071514 https://blogs.oracle.com/jamesbayer/entry/weblogic_server_shared_librari_1

于 2013-02-13T16:07:46.517 に答える
0

あなたの問題をよく理解しているかどうかはわかりません。おそらく最も簡単な解決策は、トピックを分散させ、それを使用してシングルトン状態をすべてのクラスターノードに伝播することです。

トピックを使用してシングルトン状態を伝播できます。つまり、暗黙のリロードが必要な変更または動作でシングルトン状態を1つだけ持つ、トピックにメッセージを送信すると、トピックへのすべてのMDBサブスクライブがメッセージを受信します(ここでは、分散がトリックです)(たとえば、クラスターノード用に1つのMDB)、すべてのノードで必要に応じて動作します。

この助けを願っていますが、あなたの問題をよく理解しているかどうかはわかりません。

于 2013-02-13T16:08:21.877 に答える