22.3. Infinispan
22.3.1. Infinispan
Infinispan は Java データグリッドプラットフォームで、キャッシュされたデータの管理に JSR-107 準拠のキャッシュインターフェイスを提供します。Infinispan の機能や設定オプションの詳細は Infinispan のドキュメント を参照してください。
infinispan
サブシステムは JBoss EAP のキャッシュサポートを提供します。名前付きのキャッシュコンテナーやキャッシュのランタイムメトリックスを設定および表示できます。
高可用性の機能を提供する設定を使用する場合 (マネージドドメインでは ha や full-ha プロファイル、スタンドアロンサーバーは standalone-ha.xml
や standalone-full-ha.xml
設定ファイル)、infinispan
サブシステムはキャッシング、状態のレプリケーション、および状態分散サポートを提供します。高可用性でない設定では、infinispan
サブシステムはローカルのキャッシュサポートを提供します。
Infinispan は JBoss EAP のプライベートモジュールとして含まれ、JBoss EAP のキャッシュ機能を提供します。アプリケーションによる Infinispan の直接使用はサポートされません。
22.3.2. キャッシュコンテナー
キャッシュコンテナーはサブシステムによって使用されるキャッシュのリポジトリーです。各キャッシュコンテナーは、使用されるデフォルトのキャッシュを定義します。
JBoss EAP 7 は以下のデフォルト Infinispan キャッシュコンテナーを定義します。
-
server
(シングルトンキャッシング) -
web
(Web セッションクラスタリング) -
ejb
(ステートフルセッション Bean クラスタリング) -
hibernate
(エンティティーキャッシング)
例: Infinispan のデフォルト設定
<subsystem xmlns="urn:jboss:domain:infinispan:4.0"> <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server"> <transport lock-timeout="60000"/> <replicated-cache name="default" mode="SYNC"> <transaction mode="BATCH"/> </replicated-cache> </cache-container> <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan"> <transport lock-timeout="60000"/> <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2"> <locking isolation="REPEATABLE_READ"/> <transaction mode="BATCH"/> <file-store/> </distributed-cache> </cache-container> <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan"> <transport lock-timeout="60000"/> <distributed-cache name="dist" mode="ASYNC" l1-lifespan="0" owners="2"> <locking isolation="REPEATABLE_READ"/> <transaction mode="BATCH"/> <file-store/> </distributed-cache> </cache-container> <cache-container name="hibernate" default-cache="local-query" module="org.hibernate.infinispan"> <transport lock-timeout="60000"/> <local-cache name="local-query"> <eviction strategy="LRU" max-entries="10000"/> <expiration max-idle="100000"/> </local-cache> <invalidation-cache name="entity" mode="SYNC"> <transaction mode="NON_XA"/> <eviction strategy="LRU" max-entries="10000"/> <expiration max-idle="100000"/> </invalidation-cache> <replicated-cache name="timestamps" mode="ASYNC"/> </cache-container> </subsystem>
各キャッシュコンテナーで定義されたデフォルトのキャッシュに注目してください。この例では、web
キャッシュコンテナーは dist
分散キャッシュをデフォルトとして定義します。そのため、Web セッションのクラスタリングでは dist
キャッシュが使用されます。
HTTP セッション、ステートフルセッション Bean、シングルトンサービスやデプロイメントなどのキャッシュやキャッシュコンテナーを追加できます。ユーザーアプリケーションによるこれらのキャッシュの直接使用はサポートされません。
22.3.2.1. キャッシュコンテナーの設定
キャッシュコンテナーやキャッシュ属性は、管理コンソールまたは管理 CLI を使用して設定できます。
設定の他のコンポーネントが参照する可能性があるため、キャッシュまたはキャッシュコンテナーの名前を変更しないでください。
管理コンソールを使用したキャッシュの設定
管理コンソールの Configuration タブで Infinispan サブシステムを選択するとキャッシュやキャッシュコンテナーを設定できます。マネージドドメインでは設定するプロファイルを選択してください。
キャッシュコンテナーを追加します。
キャッシュコンテナー 見出しの横にある 追加 ボタンをクリックし、新しいキャッシュコンテナーの設定を入力します。
キャッシュコンテナー設定を更新します。
適切なキャッシュコンテナーを選択し、ドロップダウンから コンテナー設定 を選択します。必要に応じてキャッシュコンテナーの設定を行います。
キャッシュコンテナートランスポート設定を更新します。
適切なキャッシュコンテナーを選択し、ドロップダウンから [トランスポート設定] を選択します。必要に応じて、キャッシュコンテナーのトランスポート設定を設定します。
キャッシュを設定します。
適切なキャッシュコンテナーを選択し、[表示] を選択します。キャッシュタブ (Replicated Cache など) でキャッシュを追加、更新、および削除できます。
管理 CLI を使用したキャッシュの設定
管理 CLI を使用してキャッシュおよびキャッシュコンテナーを設定できます。マネージドドメインではコマンドの前に /profile=PROFILE_NAME
を追加して更新するプロファイルを指定する必要があります。
キャッシュコンテナーを追加します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER:add
レプリケートされたキャッシュを追加します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE:add(mode=MODE)
キャッシュコンテナーのデフォルトキャッシュを設定します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=default-cache,value=CACHE)
レプリケートされたキャッシュのバッチ処理を設定します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER/replicated-cache=CACHE/component=transaction:write-attribute(name=mode,value=BATCH)
デフォルト EJB キャッシュコンテナーの変更
以下のようにキャッシュコンテナーを ejb3
サブシステムで使用できます。
-
EJB セッション bean のパッシベーションをサポートするには、
infinispan
サブシステムに定義されたejb
キャッシュコンテナーを使用してセッションを保存できます。 - サーバー上でクラスター化されたデプロイメントに接続するリモート EJB クライアントの場合、クラスタートポロジーの情報をこれらのクライアントに提供して、これらのクライアントが対話するノードに障害が発生したときにクラスターの別のノードにフェイルオーバーできるようにする必要があります。
パッシベーションやトポロジー情報の提供をサポートするデフォルトのキャッシュコンテナー ejb
を変更する場合や、その名前を変更する場合、以下の例のように cache-container
属性を passivation-stores
要素に追加し、cluster
属性を remote
要素に追加する必要があります。独自に使用するために新しいキャッシュを追加する場合は、このような変更を加える必要はありません。
<subsystem xmlns="urn:jboss:domain:ejb3:4.0"> <passivation-stores> <passivation-store name="infinispan" cache-container="ejb-cltest" max-size="10000"/> </passivation-stores> <remote cluster="ejb-cltest" connector-ref="http-remoting-connector" thread-pool-name="default"/> </subsystem> <subsystem xmlns="urn:jboss:domain:infinispan:4.0"> ... <cache-container name="ejb-cltest" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan"> </subsystem>
22.3.3. クラスタリングモード
JBoss EAP で Infinispan を使用すると、2 つの方法でクラスタリングを設定できます。ご使用のアプリケーションに最も適した方法は要件によって異なります。各モードでは可用性、一貫性、信頼性、およびスケーラビリティーのトレードオフが発生します。クラスタリングモードを選択する前に、ネットワークで最も重要な点を特定し、これらの要件のバランスを取ることが必要となります。
キャッシュモード
- Replicated (レプリケート)
- Replicated (レプリケート) モードはクラスターの新しいインスタンスを自動的に検出し、追加します。これらのインスタンスに加えられた変更は、クラスター上のすべてのノードにレプリケートされます。ネットワークでレプリケートされる情報量が多いため、通常 Replicated モードは小型のクラスターでの使用に最も適しています。UDP マルチキャストを使用するよう Infinispan を設定すると、ネットワークトラフィックの輻輳をある程度軽減できます。
- Distributed (分散)
Distributed (分散) モードでは、Infinispan はクラスターを線形にスケールできます。Distributed モードは一貫性のあるハッシュアルゴリズムを使用して、クラスター内で新しいノードを配置する場所を決定します。保持する情報のコピー数 (または所有者数) は設定可能です。保持するコピー数、データの永続性、およびパフォーマンスにはトレードオフが生じます。保持するコピー数が多いほどパフォーマンスへの影響が大きくなりますが、サーバーの障害時にデータを損失する可能性は低くなります。ハッシュアルゴリズムは、メタデータのマルチキャストや保存を行わずにエントリーを配置し、ネットワークトラフィックを軽減します。
クラスターサイズが 6-8 ノードを超える場合は Distributed モードをキャッシュストラテジーとして使用することを考慮してください。Distributed モードでは、データはクラスター内のすべてのノードではなくノードのサブセットのみに分散されます。
同期および非同期のレプリケーション
レプリケーションは同期または非同期モードで実行でき、選択するモードは要件やアプリケーションモードによって異なります。
- 同期のレプリケーション
- 同期レプリケーションでは、ユーザー要求を処理するスレッドは、レプリケーションが成功するまでブロックされます。レプリケーションが成功すると、応答がクライアントに返され、その後にのみスレッドが解放されます。同期レプリケーションはクラスターの各ノードからの応答を必要とするため、ネットワークトラフィックに影響を与えます。ただし、クラスターのすべてのノードへ確実に変更が加えられる利点があります。
- 非同期のレプリケーション
- 非同期のレプリケーションでは、Infinispan はスレードプールを使用してバックグラウンドでレプリケーションを実行します。送信元はクラスターの他のノードからの返答を待ちません。しかし、同じセッションを読み取るキャッシュはその前のレプリケーションが完了するまでブロックされるため、陳腐データは読み取られません。レプリケーションは時間ベースまたはキューのサイズによって引き起こされます。失敗したレプリケーションはログに書き込まれ、リアルタイムで通知されません。
22.3.3.1. キャッシュモードの設定
管理 CLI を使用してデフォルトキャッシュを変更できます。
ここでは、デフォルトが Distributed モードである Web セッションキャッシュの設定に固有する手順を説明します。手順と管理 CLI コマンドは、他のキャッシュコンテナー向けに簡単に調整できます。
Replicated キャッシュモードへの変更
Web セッションキャッシュのデフォルトの JBoss EAP 7 設定には、レプリケートされたキャッシュ repl
が含まれていません。最初にこのキャッシュを追加する必要があります。
以下はスタンドアロンサーバーの管理 CLI コマンドになります。マネージドドメインで実行している場合は、/subsystem=infinispan
コマンドの前に /profile=PROFILE_NAME
を追加し、更新するプロファイルを指定する必要があります。
repl
複製キャッシュを追加します。/subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode=ASYNC) /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=transaction:write-attribute(name=mode,value=BATCH) /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=locking:write-attribute(name=isolation, value=REPEATABLE_READ) /subsystem=infinispan/cache-container=web/replicated-cache=repl/store=file:add
デフォルトのキャッシュを
repl
レプリケートキャッシュに変更します。/subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=repl)
サーバーをリロードします。
reload
Distributed キャッシュモードへの変更
Web セッションキャッシュのデフォルトの JBoss EAP 7 設定にはすでに dist
分散キャッシュが含まれています。
以下はスタンドアロンサーバーの管理 CLI コマンドになります。マネージドドメインで実行している場合は、/subsystem=infinispan
コマンドの前に /profile=PROFILE_NAME
を追加し、更新するプロファイルを指定する必要があります。
デフォルトのキャッシュを
dist
分散キャッシュに変更します。/subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=dist)
分散キャッシュの所有者数を設定します。以下のコマンドは所有者の数を
5
に設定します。デフォルトは2
です。/subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=5)
サーバーをリロードします。
reload
22.3.3.2. キャッシュストラテジーのパフォーマンス
SYNC
キャッシュストラテジーを使用すると、レプリケーションが完了するまでリクエストが完了しないため、レプリケーションのコストを簡単に評価でき、直接応答時間に影響します。
ASYNC
キャッシュストラテジーの応答時間は SYNC
キャッシュストラテジーよりも短いと思われがちですが、一定の状況下でのみ短くなります。ASYNC
キャッシュストラテジーの評価はより困難ですが、リクエスト間の時間がキャッシュ操作を完了できるほど長い場合はパフォーマンスが SYNC
よりも良くなります。これは、レプリケーションのコストが応答時間に即影響しないためです。
同じセッションのリクエストの作成が早すぎると、先行リクエストからのレプリケーションが完了するまで待機しなければならないため、先行リクエストのレプリケーションコストが後続リクエストの前に移動します。応答の受信直後に後続リクエストが送信され、リクエストが急速に発生する場合、 ASYNC
キャッシュストラテジーのパフォーマンスは SYNC
よりも劣化します。そのため、同じセッションのリクエストの間には、SYNC
キャッシュストラテジーのパフォーマンスが ASYNC
キャッシュストラテジーよりも良くなる期間のしきい値があります。実際の使用状態では、通常同じセッションのリクエストが立て続けに受信されることはありませんが、一般的にリクエストの間に数秒程度の時間が存在します。その代わりに、通常、要求間に数秒以上の時間が経過します。この場合、ASYNC
キャッシュストラテジーが適切なデフォルトで、応答時間が早くなります。
22.3.4. Infinispan スレッドプールの設定
infinispan
サブシステムには async-operations
、expiration
、listener
、persistence
、remote-command
、state-transfer
、および transport
スレッドプールが含まれます。これらのプールはすべての Infinispan キャッシュコンテナーに設定できます。
以下の表は、infinispan
サブシステムの各スレッドプールに設定できる属性とデフォルト値を表しています。
スレッドプール名 | keepalive-time | max-threads | min-threads | queue-length |
---|---|---|---|---|
async-operations | 60000L | 25 | 25 | 1000 |
expiration | 60000L | 1 | 該当なし | 該当なし |
listener | 60000L | 1 | 1 | 100000 |
persistence | 60000L | 4 | 1 | 0 |
remote-command | 60000L | 200 | 1 | 0 |
state-transfer | 60000L | 60 | 1 | 0 |
transport | 60000L | 25 | 25 | 100000 |
以下の構文を使用して、管理 CLI で Infinispan スレッドプールを設定します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER_NAME/thread-pool=THREAD_POOL_NAME:write-attribute(name=ATTRIBUTE_NAME, value=ATTRIBUTE_VALUE)
以下は、 server
キャッシュコンテナーの persistence
スレッドプールで max-threads
の値を 10
に設定する管理 CLI コマンドの例になります。
/subsystem=infinispan/cache-container=server/thread-pool=persistence:write-attribute(name="max-threads", value="10")
22.3.5. Infinispan の統計
監視目的で、Infinispan キャッシュやキャッシュコンテナーに関する実行時統計を有効にできます。パフォーマンス上の理由で、統計の収集はデフォルトでは無効になっています。
統計収集は、各キャッシュコンテナー、キャッシュ、または両方に対して有効にできます。各キャッシュの統計オプションはキャッシュコンテナーのオプションをオーバーライドします。キャッシュコンテナーの統計収集を無効または有効にすると、独自の設定が明示的に指定されている場合以外はそのコンテナーのすべてのキャッシュが設定を継承します。
22.3.5.1. Infinispan 統計の有効化
Infinispan の統計を有効にすると、infinispan
サブシステムのパフォーマンスに影響する可能性があります。統計は必要な場合のみ有効にしてください。
管理コンソールまたは管理 CLI を使用すると Infinispan の統計収集を有効または無効にできます。管理コンソールでは、Configuration タブで Infinispan サブシステム選択してキャッシュまたはキャッシュコンテナーを選択し、Statistics Enabled 属性を編集します。管理 CLI を使用する場合は以下のコマンドを実行して統計を有効にします。
キャッシュコンテナーの統計収集を有効にします。サーバーをリロードする必要があります。
/subsystem=infinispan/cache-container=CACHE_CONTAINER:write-attribute(name=statistics-enabled,value=true)
キャッシュの統計収集を有効にします。サーバーをリロードする必要があります。
/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:write-attribute(name=statistics-enabled,value=true)
以下のコマンドを使用すると、キャッシュの statistics-enabled
属性の定義が解除され、キャッシュコンテナーの statistics-enabled
属性の設定を継承します。
/subsystem=infinispan/cache-container=CACHE_CONTAINER/CACHE_TYPE=CACHE:undefine-attribute(name=statistics-enabled)
22.3.6. Infinispan パーティションの処理
Infinispan クラスターは、データが保存される複数のノードで構築されます。複数のノードに障害が発生した場合のデータの損失を防ぐため、Infinispan は複数のノードで同じデータをコピーします。このレベルのデータ冗長性は owners
属性を使用して設定されます。設定されたノードの数未満のノードが同時にクラッシュしても、Infinispan はデータのコピーを利用できます。
しかし、クラスターから大量のノードが消滅すると最悪の事態を招く可能性があります。
- スプリットブレイン
スプリットブレインはクラスターを独立して動作する 2 つ以上のパーティションまたはサブクラスターに分割します。このような場合、異なるパーティションから読み書きする複数のクライアントが同じキャッシュエントリーの異なるバージョンを見ることになり、多くのアプリケーションにとって問題となります。
注記冗長ネットワークや IP ボンディング など、スプリットブレインが発生する可能性を軽減する方法があることに注意してください。これらは、問題の発生期間のみを縮小します。
- 複数ノードの連続クラッシュ
- 複数のノード (所有者の数) が連続してクラッシュし、Infinispan がクラッシュ間の状態を適切に調整する時間がない場合、結果として部分的なデータの損失が発生します。
スプリットブレインや複数ノードの連続クラッシュが原因で、不適切なデータがユーザーに返されないようにすることが大切です。
22.3.6.1. スプリットブレイン
スプリットブレインが発生した場合、各ネットワークパーティションが独自の JGroups ビューをインストールし、他のパーティションからノードを削除します。パーティションはお互いを認識しないため、クラスターが 2 つ以上のパーティションに分割されたかどうかを直接判断することはできません。そのため、明示的な脱退メッセージを送信せずに、1 つ以上のノードが JGroups クラスターから消滅した場合にクラスターが分割されたと判断します。
パーティション処理が無効の場合、各パーティションは継続して独立したクラスターとして機能します。各パーティションはデータの一部のみを認識できる可能性があり、競合する更新をキャッシュに書き込む可能性があります。
パーティション処理が有効の場合、スプリットを検出したときに各パーティションは即座にリバランスを行わず、degrade モードにするかどうかを最初にチェックします。
- 1 つ以上のセグメントがすべての所有者を失った場合 (最後に行ったリバランスが完了した後に指定した所有者の数以上が脱退した場合)、パーティションは degrade モードになります。
- 最新の安定したトポロジーでパーティションに単純多数のノード (floor(numNodes/2) + 1) が含まれない場合も、パーティションは degrade モードになります。
- その他の場合は、パーティションは通常通り動作し、リバランスを開始します。
安定したトポロジーは、リバランス操作が終了するたびに更新され、コーディネーターによって他のリバランスが必要ないと判断された場合に毎回更新されます。これらのルールは、1 つのパーティションが available モードを維持し、他のパーティションが degraded モードになるようにします。
パーティションが degraded モードの場合、完全に所有されたキーへのアクセスのみを許可します。
- このパーティション内のノード上のコピーをすべて持つエントリーのリクエスト (読み取りおよび書き込み) は許可されます。
-
消滅したノードによって完全所有または一部所有されたエントリーのリクエストは
AvailabilityException
によって拒否されます。
これにより、パーティションが同じキーに異なる値を書き込めないようにし (キャッシュの一貫性を保つ) 、さらにパーティションが他のパーティションで更新されたキーを読み取れないようにします (陳腐データをなくす)。
2 つのパーティションは分離して開始できます。これらのパーティションはマージされなければ不整合なデータを読み書きできます。 将来的に、この状況に対処できるカスタムの可用性ストラテジーが許可される可能性があります (例: 特定のノードがクラスターの一部であるかを確認、外部のマシンにアクセスできるかどうかを確認など)。
22.3.6.2. パーティション処理の設定
現在、パーティションの処理はデフォルトで無効になっています。パーティションの処理を有効にするには、以下の管理 CLI コマンドを使用します。
/subsystem=infinispan/cache-container=web/distributed-cache=dist/component=partition-handling:write-attribute(name=enabled, value=true)
22.3.7. HTTP セッションの JBoss Data Grid への外部化
この機能を使用するには JBoss Data Grid のサブスクリプションが必要です。
Red Hat JBoss Data Grid は、HTTP セッションなどの JBoss EAP のアプリケーション固有データの外部キャッシュコンテナーとして使用できます。これにより、アプリケーションとは独立したデータレイヤーのスケーリングが可能になり、さまざまなドメインに存在する可能性がある異なる JBoss EAP クラスターが同じ JBoss Data Grid クラスターからデータにアクセスできるようになります。また、他のアプリケーションは Red Hat JBoss Data Grid によって提供されたキャッシュと対話できます。
以下の例は、HTTP セッションを外部化する方法を説明しています。これは、JBoss EAP のスタンドアロンインスタンスとマネージドドメインの両方に適用されます。ただし、管理対象ドメインでは、各サーバーグループに固有のリモートキャッシュを設定する必要があります。複数のサーバーグループは同じ Red Hat JBoss Data Grid クラスターを使用できますが、各リモートキャッシュは JBoss EAP サーバーグループに固有となります。
分散可能なアプリケーションごとに完全に新しいキャッシュを作成する必要があります。新しいキャッシュは web などの既存のキャッシュコンテナーに作成できます。
HTTP セッションを外部化するには、以下を行います。
ネットワーク情報を
socket-binding-group
に追加することにより、リモート Red Hat JBoss Data Grid サーバーの場所を定義します。例: リモートソケットバインディングの追加
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server1:add(host=JDGHostName1, port=11222) /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-jdg-server2:add(host=JDGHostName2, port=11222)
結果の XML
<socket-binding-group name="standard-sockets" ... > ... <outbound-socket-binding name="remote-jdg-server1"> <remote-destination host="JDGHostName1" port="11222"/> </outbound-socket-binding> <outbound-socket-binding name="remote-jdg-server2"> <remote-destination host="JDGHostName2" port="11222"/> </outbound-socket-binding> </socket-binding-group>
注記各 Red Hat JBoss Data Grid サーバーにリモートソケットバインディングを設定する必要があります。
リモートキャッシュコンテナーが JBoss EAP の
infinispan
サブシステムで定義されているようにしてください。 以下の例では、remote-store
要素のcache
属性によって、リモート JBoss Data Grid サーバーのキャッシュ名が定義されます。マネージドドメインで実行している場合は、コマンドの前に
/profile=PROFILE_NAME
を追加してください。例: リモートキャッシュコンテナーの追加
/subsystem=infinispan/cache-container=web/invalidation-cache=jdg:add(mode=SYNC) /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=locking:write-attribute(name=isolation,value=REPEATABLE_READ) /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/component=transaction:write-attribute(name=mode,value=BATCH) /subsystem=infinispan/cache-container=web/invalidation-cache=jdg/store=remote:add(remote-servers=["remote-jdg-server1","remote-jdg-server2"], cache=default, socket-timeout=60000, passivation=false, purge=false, shared=true)
結果の XML
<subsystem xmlns="urn:jboss:domain:infinispan:4.0"> ... <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan" statistics-enabled="true"> <transport lock-timeout="60000"/> <invalidation-cache name="jdg" mode="SYNC"> <locking isolation="REPEATABLE_READ"/> <transaction mode="BATCH"/> <remote-store cache="default" socket-timeout="60000" remote-servers="remote-jdg-server1 remote-jdg-server2" passivation="false" purge="false" shared="true"/> </invalidation-cache> ... </cache-container> </subsystem>
キャッシュ情報をアプリケーションの
jboss-web.xml
に追加します。以下の例では、web
はキャッシュコンテナーの名前で、jdg
はこのコンテナーにある適切なキャッシュの名前になります。例:
jboss-web.xml
ファイル<?xml version="1.0" encoding="UTF-8"?> <jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_10_0.xsd" version="10.0"> <replication-config> <replication-granularity>SESSION</replication-granularity> <cache-name>web.jdg</cache-name> </replication-config> </jboss-web>