Stateless Session Bean を実行して、さまざまな場所からデータを取得しています。
この SLSB のキャッシュを実現する最善の方法は何ですか?
インターセプターを使用していますか? JBossCache を使用していますか?
JBoss 5.0.1 を使用しています。
技術的には、ステートレス セッション Bean で状態を保持することが許可されています。これは、呼び出しの間にコンテナーによって状態がクリアされる可能性があるということだけです。その結果、キャッシュ自体が消える可能性があるため、Bean にキャッシュ自体を保持しないでください。
すでに JBoss Appserver を使用しているため、ここでは JBossCache が明らかに勝者のように思えます。jboss サービス記述子を使用して JBossCache インスタンスを設定すると、EJB は JMX/JNDI からキャッシュ インスタンスをルックアップできます。JBossAS にはすでにすべて含まれているため、追加の依存関係は必要ありません。
JBossCache を使用すると、クラスター全体にキャッシュが分散されるという追加のボーナスも得られます (興味がある場合)。
steteless セッション Bean 自体は、その名前が示すようにステートレスであるため、呼び出し間でデータを保持できません。でも。キャッシュを保持するステートフル セッション Bean を作成し、この Bean をステートレス Bean メソッドに渡すことができます。
void someMethod(StateFulBean sfb){
Cache cahce = sfb.getCache();
...
}
EBJ 3.1 を使用する場合、Singleton アノテーションを利用して、キャッシュをシングルトンとしてステートレス セッション Bean に注入することもできます。