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-storemax-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 操作ヘッダーを指定できます。これによりサービスが再起動され、操作が適用されますが、このサービスが再起動するまで一部のサービスが停止する可能性があります。

スクリプトを使用してキャッシュコンテナートランスポートプロトコルを更新する場合は、スクリプトを確認し、バッチモードを追加してください。