22.2. EJB 3.0 でのステートフルセッション Bean


ステートフルセッション Bean のクラスター化は、JBoss がステート情報を管理する必要があるためステートレスセッション beanよりも複雑になります。すべてのステートフルセッション Bean のステートはレプリケートされ、Bean のステートが変更されるたびにクラスター全体で同期されます。

22.2.1. EJB アプリケーション設定

EJB 3.0 でステートフルセッション Bean をクラスター化するには、 EJB 3.0 のステートレスセッション Bean をクラスター化したように、 Bean 実装クラスに @Cluster アノテーションのタグを付ける必要があります。 ステートレスセッション Bean と異なり、 ステートフルセッション Bean のメソッド呼び出しは、 デフォルトで org.jboss.ha.client.loadbalance.aop.FirstAvailable を使用して負荷分散されます。 このポリシーを使用してメソッド呼び出しが無作為に選択されたノードに従います。
@org.jboss.ejb3.annotation.CacheConfig アノテーションを Bean に適応してデフォルトのキャッシング動作を上書きすることもできます。 @CacheConfig アノテーションの定義は次の通りです。
public @interface CacheConfig
{
   String name() default "";
   int maxSize() default 10000;
   long idleTimeoutSeconds() default 300;   
   boolean replicationIsPassivation() default true;   
   long removalTimeoutSeconds() default 0;
}
Copy to Clipboard Toggle word wrap
  • name は、 「CacheManager サービスの設定」 で説明した CacheManager サービスで登録されたキャッシュ設定の名前を指定します。 デフォルトでは、 sfsb-cache 設定が使用されます。
  • maxSize は、LRU アルゴリズムを使用して Bean の非活性化を開始する前にキャッシュできる Bean の最大数を指定します。
  • idleTimeoutSeconds はキャッシュが Bean を非活性化する前に Bean が未使用の状態でいられる最大時間を指定します (maxSize Bean がキャッシュされているかは無関係)。
  • removalTimeoutSeconds は、キャッシュが Bean を削除するまで Bean を使用しない最大時間を指定します。
  • replicationIsPassivation は、キャッシュでレプリケーションを非活性化と同等であると見なし、Bean に対して @PrePassivate と @PostActivate のコールバックを呼び出すかどうかを指定します。デフォルトでは真であり、レプリケーションには Bean のシリアル化が関係するため、シリアル化の準備とシリアル化からの回復がコールバックメソッドを実装する一般的な理由となります。
以下は、クラスター化された EJB 3.0 のステートレスセッション Bean の実装例になります。
@Stateful
@Clustered
@CacheConfig(maxSize=5000, removalTimeoutSeconds=18000)
public class MyBean implements MySessionInt
{
   private int state = 0;

   public void increment()
   {
      System.out.println("counter: " + (state++));
   }
}
Copy to Clipboard Toggle word wrap
ステートレス Bean と同様に、@Clustered アノテーションは省略でき、クラスタリング設定は jboss.xml に適用されます。
<jboss>    
   <enterprise-beans>
      <session>
         <ejb-name>NonAnnotationStateful</ejb-name>
         <clustered>true</clustered>
         <cache-config>
            <cache-max-size>5000</cache-max-size>
            <remove-timeout-seconds>18000</remove-timeout-seconds>
         </cache-config>
      </session>    
   </enterprise-beans>
</jboss>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat