クラスター化されたJBoss環境の機能をテストするために、いくつかのプロジェクトでバニラJBossAS 6サーバーを使用しています。私が抱えている問題は、ノード内の 1 つの EJB (別のタイプ) から別のノード内の同じタイプのインスタンスに EJB 参照を転送すると、メソッド呼び出し時に例外がスローされ、そのlong_alphanumeric_keyキーが指定された Bean はキャッシュ (InfinispanStatefulCache) に登録されていません。
問題は、転送する必要があるオブジェクトでステートフル アノテーションの代わりにシングルトン アノテーションを使用すると、転送されたオブジェクトが問題なく動作し、それが作成されたサーバーで共有 EJB のメソッドを正常に呼び出すことです。問題は、このケースには HA-Singleton と同じ欠陥があることです。HA-JNDI ツリーのルックアップを介して以前に取得されたすべての転送された参照。
私が達成しようとしていることについての洞察:
私が現在必要としているのは、HA-Singleton のようにノード間でステートフル EJB の単一インスタンスを共有することです。HA-Singleton を使用しない理由は、このタイプのシングルトンの状態がクラスターのマスター ノードで排他的に維持されるため、ノードがシャットダウンまたは失敗した場合、インスタンスの状態が失われるためです。
ステートフル Bean を使用すると、クラスターの状態を維持できるため、ノードで障害が発生したときに状態が失われるのを防ぐことができます。JBoss と Infinispan のキャッシュがどのように機能するかはまだ完全には理解できていませんが、私が読んだ限りでは、@Clusteredアノテーション付きステートフル Bean の状態はクラスター全体に自動的に複製されます。
現在の JBoss バージョンで Singleton と HA-Singleton を使用する際の問題についてはすでに警告されているため、この設計変更の解決に役立つあらゆる種類のドキュメントまたはパターンを歓迎します。
また、Infinispan キャッシュと JBoss クラスタリングがどのように機能するかについての洞察を提供できるドキュメントをいただければ幸いです。これまで私が読んできた資料には、Infinispan の代わりに JBossCache が使用された古い JBoss バージョンが混在していました。
よろしくお願いします、
ドイツ語