21.4.4. ステートフルセッション Bean キャッシュの設定
JBoss EAP 6 では、ステートフル EJB キャッシュはサーバー設定ファイルの
ejb3 サブシステムに設定されます。以下の手順では、ステートフル EJB キャッシュおよびステートフルタイムアウトを設定する方法を説明します。
手順21.18 ステートフル 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設定。