3.2.13.2. ステートフルセッション Bean キャッシュの設定
JBoss EAP 6 では、ステートフル EJB キャッシュはサーバー設定ファイルの
ejb3
サブシステムに設定されます。以下の手順では、ステートフル EJB キャッシュおよびステートフルタイムアウトを設定する方法を説明します。
手順3.28 ステートフル EJB キャッシュの設定
- サーバー設定ファイルの
ejb3
サブシステムで<caches>
要素を見つけます。<cache>
要素を追加します。以下の例では、「my=cache」という名前のキャッシュを作成します。<cache name="my-cache" passivation-store-ref="my-cache-file" aliases="my-custom-cache"/>
<cache name="my-cache" passivation-store-ref="my-cache-file" aliases="my-custom-cache"/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - サーバー設定ファイルの
ejb3
サブシステムで<passivation-stores>
要素を見つけます。前のステップで定義したキャッシュ用に<file-passivation-store>
を作成します。<file-passivation-store name="my-cache-file" idle-timeout="1260" idle-timeout-unit="SECONDS" max-size="200"/>
<file-passivation-store name="my-cache-file" idle-timeout="1260" idle-timeout-unit="SECONDS" max-size="200"/>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ejb3
サブシステムの設定が以下の例のようになるはずです。パッシベーションキャッシュ "my-cache" は「my-cache-file」パッシベーションストアに設定されたようにステートフルセッション Bean をファイルシステムに渡します。これには、Copy to Clipboard Copied! Toggle word wrap Toggle overflow idle-timeout
、idle-timeout-unit
、およびmax-size
オプションが含まれます。- EJB JAR の
META
ファイルを作成します。以下の例は、前のステップで定義されたキャッシュを使用するように EJB を設定します。-INF/
ディレクトリーに jboss-ejb3.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - タイムアウト値を設定する方法は、EJB 2 または EJB 3 を実装するかどうかによって異なります。
- EJB 3 ではアノテーションが導入されるため、以下のように EJB コードで
javax.ejb.StatefulTimeout
アノテーションを指定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow @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
ファイルでステートフルタイムアウトを設定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - EJB 2 と EJB 3 の両方に対して、
jboss-ejb3.xml ファイルでステートフルタイムアウトを
設定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
追加情報
- ステートフルセッション 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>
<c:cache-ref>simple</c:cache-ref>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 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
設定。