21.4.4. ステートフルセッション Bean キャッシュの設定


JBoss EAP 6 では、ステートフル EJB キャッシュはサーバー設定ファイルの ejb3 サブシステムに設定されます。以下の手順では、ステートフル EJB キャッシュおよびステートフルタイムアウトを設定する方法を説明します。

手順21.18 ステートフル EJB キャッシュの設定

  1. サーバー設定ファイルの ejb3 サブシステムで <caches> 要素を見つけます。<cache> 要素を追加します。以下の例では、「my=cache」という名前のキャッシュを作成します。
    <cache name="my-cache" passivation-store-ref="my-cache-file" aliases="my-custom-cache"/>
    Copy to clipboard
  2. サーバー設定ファイルの ejb3 サブシステムで <passivation-stores> 要素を見つけます。前のステップで定義したキャッシュ用に <file-passivation-store> を作成します。
    <file-passivation-store name="my-cache-file" idle-timeout="1260" idle-timeout-unit="SECONDS" max-size="200"/>
    Copy to clipboard
  3. ejb3 サブシステムの設定が以下の例のようになるはずです。
    <subsystem xmlns="urn:jboss:domain:ejb3:1.4">
      ...
      <caches>
        <cache name="simple" aliases="NoPassivationCache"/>
        <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>  
        <cache name="clustered" passivation-store-ref="infinispan" aliases="StatefulTreeCache"/>  
        <cache name="my-cache" passivation-store-ref="my-cache-file" aliases="my-custom-cache"/>               
      </caches>
      <passivation-stores>
        <file-passivation-store name="file" idle-timeout="120" idle-timeout-unit="SECONDS" max-size="500"/>
        <cluster-passivation-store name="infinispan" cache-container="ejb"/>
        <file-passivation-store name="my-cache-file" idle-timeout="1260" idle-timeout-unit="SECONDS" max-size="200"/>
      </passivation-stores>
      ...
    </subsystem>
    Copy to clipboard
    パッシベーションキャッシュ "my-cache" は「my-cache-file」パッシベーションストアに設定されたようにステートフルセッション Bean をファイルシステムに渡します。これには、idle-timeoutidle-timeout-unit、および max-size オプションが含まれます。
  4. EJB JAR の META -INF/ ディレクトリーに jboss-ejb3.xml ファイルを作成します。以下の例は、前のステップで定義されたキャッシュを使用するように EJB を設定します。
    <jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
          xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:c="urn:ejb-cache:1.0"
          xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
          version="3.1"
          impl-version="2.0">
      <assembly-descriptor>
        <c:cache>
          <ejb-name>*</ejb-name>
          <c:cache-ref>my-cache</c:cache-ref>
        </c:cache>
      </assembly-descriptor>
    </jboss:ejb-jar>
    Copy to clipboard
  5. タイムアウト値を設定する方法は、EJB 2 または EJB 3 を実装するかどうかによって異なります。
    • EJB 3 ではアノテーションが導入されるため、以下のように EJB コードで javax.ejb.StatefulTimeout アノテーションを指定できます。
      @StatefulTimeout(value = 1320, unit=java.util.concurrent.TimeUnit.SECONDS) 
      @Stateful
      @Remote(MyStatefulEJBRemote.class)
      public class MyStatefulEJB implements MyStatefulEJBRemote {
        ...
      }
      Copy to clipboard
      @StatefulTimeout の値は以下のいずれかに設定できます。
      • 値が 0 の場合は、Bean がすぐに削除できます。
      • 0 より大きい値は、unit パラメーターで指定された単位のタイムアウト値を示します。デフォルトのタイムアウト単位は MINUTES です。パッシベーションキャッシュ設定を使用し、idle-timeout の値が StatefulTimeout 値よりも小さい場合、指定された idle-timeout 期間に対してアイドル状態になると、JBoss EAP は Bean をパッシベートします。その後、Bean は StatefulTimeout の期間後に削除することができます。
      • -1 を値と て指定すると、タイムアウトにより bean が削除されません。パッシベーションキャッシュ設定を使用し、Bean が idle-timeout でアイドル状態である場合、JBoss EAP は Bean インスタンスを passivation-store に渡します。
      • -1 未満の値は有効ではありません。
    • EJB 2 と EJB 3 の両方に対して、ejb-jar.xml ファイルでステートフルタイムアウトを設定できます。
      <?xml version="1.0" encoding="UTF-8"?>
      <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
               version="3.1">
        <enterprise-beans>
          <session>
            <ejb-name>HelloBean</ejb-name>
              <session-type>Stateful</session-type>
              <stateful-timeout>
                <timeout>1320</timeout>
                <unit>Seconds</unit>
              </stateful-timeout>
          </session>
        </enterprise-beans>
      </ejb-jar>
      Copy to clipboard
    • EJB 2 と EJB 3 の両方に対して、jboss-ejb3.xml ファイルでステートフルタイムアウトを 設定できます。
      <jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
            xmlns="http://java.sun.com/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:c="urn:ejb-cache:1.0"
            xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
            version="3.1"
            impl-version="2.0">
        <enterprise-beans>
          <session>
            <ejb-name>HelloBean</ejb-name>
              <session-type>Stateful</session-type>
              <stateful-timeout>
                <timeout>1320</timeout>
                <unit>Seconds</unit>
              </stateful-timeout>
          </session>
        </enterprise-beans>
        <assembly-descriptor>
          <c:cache>
            <ejb-name>*</ejb-name>
            <c:cache-ref>my-cache</c:cache-ref>
          </c:cache>
        </assembly-descriptor>
      </jboss:ejb-jar>
      Copy to clipboard

追加情報

  • ステートフルセッション Bean のパッシベーションを無効にするには、以下のいずれかを行います。
    • EJB 3 アノテーションを使用してステートフルセッション Bean を実装した場合、アノテーションのステートフルセッション Bean のパッシベーションを無効にできます。 @org.jboss.ejb3.annotation.Cache("NoPassivationCache")
    • ステートフルセッション Bean が jboss-ejb3.xml ファイルで設定されている場合、<c:cache-ref> 要素の値を NoPassivationCache と同等である「simple」に設定します。
      <c:cache-ref>simple</c:cache-ref>
      Copy to clipboard
  • JBoss EAP 6 では EJB キャッシュポリシー「LRUStatefulContextCachePolicy」が変更になったため、JBoss EAP 6 では 1 対 1 の設定マッピングを行うことができません。
  • JBoss EAP 6 では、以下のキャッシュプロパティーを設定できます。
    • Bean のライフサイクル時間は、EJB 3.1 の @StatefulTimeout を使用して設定されます。
    • <file-passivation-store> 要素の idle-timeout 属性を使用して、サーバー設定ファイルの ejb3 サブシステムのディスクに Bean のパッシベーションを設定します。
    • <file-passivation-store> 要素の max-size 属性を使用して、サーバー設定ファイルの ejb3 サブシステムでパッシベーションストアの最大サイズを設定します。
  • JBoss EAP 6 では、以下のキャッシュプロパティーを設定することはできません。
    • メモリーキャッシュの最小および最大数。
    • パッシベーションストアの最小番号。
    • キャッシュ操作の頻度を制御する *-period 設定。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.