22.4. EJB 2.x のステートフルセッション Bean

ステートフルセッション Bean のクラスター化は、 JBoss がステート情報を管理する必要があるためステートレスセッション beanよりも複雑になります。 すべてのステートフルセッション Bean のステートはレプリケートされ、 Bean のステートが変更されるたびにクラスター全体で同期されます。 JBoss Enterprise Application Platform は HASessionStateService Bean を使用してクラスター化された EJB 2.x ステートフルセッション Bean の分散セッションステートを管理します。 この項では、 セッション Bean 設定と HASessionStateService Bean 設定の両方について説明します。

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

EJB アプリケーションでは、各ステートフルセッション Bean に対する jboss.xml 記述子ファイルを変更し、<clustered> タグを追加する必要があります。
<jboss>    
  <enterprise-beans>
    <session>        
      <ejb-name>nextgen.StatefulSession</ejb-name>
      <jndi-name>nextgen.StatefulSession</jndi-name>
      <clustered>True</clustered>
      <cluster-config>
        <partition-name>DefaultPartition</partition-nam>
        <home-load-balance-policy>org.jboss.ha.framework.interfaces.RoundRobin</home-load-balance-policy>
        <bean-load-balance-policy>org.jboss.ha.framework.interfaces.FirstAvailable</bean-load-balance-policy>          
        <session-state-manager-jndi-name>/HASessionState/Default</session-state-manager-jndi-name>        
      </cluster-config>
    </session>
  </enterprise-beans>
</jboss>
この Bean 設定では、Bean がクラスターで動作することを示す <clustered> タグが必須です。<cluster-config> 要素はオプションであり、そのデフォルトの属性値は上記と同じ設定で指定されます。
<session-state-manager-jndi-name> タグは、この Bean が使用する HASessionStateService サービスの JNDI 名を提供するために使用されます。
残りのタグの詳細はステートレスセッション Bean と同一となります。 クラスター化されたステートフルセッション Bean のホームインタフェースでのアクションはデフォルトでラウンドロビン方式により負荷分散されます。 クライアントに対して Bean のリモートスタブが利用できるようになると、 呼び出しはラウンドロビン方式で負荷分散されなくなり、 一覧の 1 番目のノードに固定されます。