4.7. Infinispan サーバー設定の変更
4.7.1. Infinispan のデフォルトキャッシュ設定の変更
JBoss EAP 6 では、Web セッションレプリケーションおよび EJB レプリケーションのデフォルトのクラスター化キャッシュはレプリケートされた ASYNC
キャッシュでしたが、これが JBoss EAP 7 では変更になりました。これは JBoss EAP 7 で変更になりました。デフォルトのクラスター化されたキャッシュは ASYNC
キャッシュを分散するようになりました。レプリケートされたキャッシュは、デフォルトでは設定されなくなりました。レプリケートされたキャッシュを追加して、デフォルトに設定する方法は、JBoss EAP 『設定ガイド』 の「キャッシュモードの設定」を参照してください。
これは、新しい JBoss EAP 7 のデフォルト設定を使用する場合のみ影響します。JBoss EAP 6 から設定を移行する場合は、infinispan
サブシステムの設定は保持されます。
4.7.2. Infinispan のキャッシュストラテジーの変更
ASYNC
キャッシュストラテジーの動作が JBoss EAP 7 では変更になりました。
JBoss EAP 6 では、ASYNC
キャッシュの読み取りにロックはありませんでした。ブロックは発生しませんでしたが、フェイルオーバーなどで陳腐データのダーティーリードが発生する傾向にありました。これは、リクエストの完了前に同じユーザーの次のリクエストを開始できたためです。これは、クラスタートポロジーの変更がセッションアフィニティーに影響し、容易にデータが陳腐化することがあるため、分散モードを使用するときは許可されません。
JBoss EAP 7 では、ASYNC
キャッシュの読み取りにロックが必要になりました。レプリケーションが終了するまで同じユーザーの新しいリクエストをブロックするようになったため、ダーティーリードが発生しないようになりました。
4.7.3. パッシベーションに対するカスタムステートフルセッション bean の設定
JBoss EAP 7.1 以上のリリースで、パッシベーションに対してカスタムステートフルセッション bean (SFSB) を設定する場合は、以下の制限に注意してください。
-
ejb3
サブシステムのinfinispan
passivation-store
で設定されるidle-timeout
属性は、JBoss EAP 7.1 以上のリリースでは非推奨となりました。JBoss EAP 6.4 ではイーガー (eager) パッシベーションがサポートされ、idle-timeout
の値を基にパッシベーションが実行されました。JBoss EAP 7.1 以上のリリースではレイジー (lazy) パッシベーションがサポートされ、max-size
しきい値に達するとパッシベーションが行われます。 -
JBoss EAP 7.1 以上のリリースでは、EJB クライアントによって使用されるクラスター名は、
jgroups
サブシステムで設定されるチャネルの実際のクラスター名によって判断されます。 -
JBoss EAP 7.1 以上のリリースでも、
max-size
属性を設定してパッシベーションのしきい値を制御できます。 EJB キャッシュ設定でエビクションまたはエクスパレーションを設定しないでください。
-
エビクションは、
ejb3
サブシステムのpassivation-store
のmax-size
属性を使用して設定してください。 -
エクスパレーションは、SFSB Java ソースコードの
@StatefulTimeout
アノテーションを使用するか、ejb-jar.xml
ファイルにstateful-timeout
値を指定して設定してください。
-
エビクションは、
4.7.4. Infinispan キャッシュコンテナートランスポートの変更
JBoss EAP 7.0 の動作が JBoss EAP 7.1 以上のバージョンで変更になったため、キャッシュコンテナートランスポートプロトコルの更新はバッチモードで実行するか、特別なヘッダーを使用して実行する必要があります。この動作の変更は、JBoss EAP サーバーの管理に使用されたすべてのツールにも影響があります。
以下は、JBoss EAP 7.0 でキャッシュコンテナートランスポートプロトコルの設定に使用された管理 CLI コマンドの例になります。
/subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
以下は、JBoss EAP 7.1 で同じ設定を実行するために必要な管理 CLI コマンドの例になります。コマンドはバッチモードで実行されることに注意してください。
batch /subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC) run-batch
バッチモードを使用したくない場合は、代わりにトランスポートの定義時に allow-resource-service-restart=true
操作ヘッダーを指定できます。これによりサービスが再起動され、操作が適用されますが、このサービスが再起動するまで一部のサービスが停止する可能性があります。
スクリプトを使用してキャッシュコンテナートランスポートプロトコルを更新する場合は、スクリプトを確認し、バッチモードを追加してください。