24.3.10. リモートストアを使用した HTTP セッションの Red Hat Data Grid への外部化
この機能を使用するには Red Hat Data Grid のサブスクリプションが必要です。
この手順は、セッションを外部化する旧式の方法になります。JBoss EAP 7.2 には、elytron
サブシステムと統合する HotRod プロトコルをベースとするカスタムの最適化されたキャッシュストアが導入されました。HTTP セッションの JBoss Data Grid への外部化
の説明にしたがって、新しい hotrod ストアを使用することが推奨されます。
分散可能なアプリケーションごとに完全に新しいキャッシュを作成する必要があります。新しいキャッシュは web
などの既存のキャッシュコンテナーに作成できます。
HTTP セッションを外部化するには、以下を行います。
ネットワーク情報を
socket-binding-group
に追加することにより、リモート Red Hat Data Grid サーバーの場所を定義します。例: リモートソケットバインディングの追加
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-rhdg-server1:add(host=RHDGHostName1, port=11222) /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-rhdg-server2:add(host=RHDGHostName2, port=11222)
結果の XML
<socket-binding-group name="standard-sockets" ... > ... <outbound-socket-binding name="remote-rhdg-server1"> <remote-destination host="RHDGHostName1" port="11222"/> </outbound-socket-binding> <outbound-socket-binding name="remote-rhdg-server2"> <remote-destination host="RHDGHostName2" port="11222"/> </outbound-socket-binding> </socket-binding-group>
注記各 Red Hat Data Grid サーバーにリモートソケットバインディングを設定する必要があります。
リモートキャッシュコンテナーが JBoss EAP の
infinispan
サブシステムで定義されているようにしてください。 以下の例では、remote-store
要素のcache
属性によって、リモート Red Hat Data Grid サーバーのキャッシュ名が定義されます。管理対象ドメインで実行している場合は、コマンドの前に
/profile=PROFILE_NAME
を追加してください。例: リモートキャッシュコンテナーの追加
/subsystem=infinispan/cache-container=web/invalidation-cache=rhdg:add(mode=SYNC) /subsystem=infinispan/cache-container=web/invalidation-cache=rhdg/component=locking:write-attribute(name=isolation,value=REPEATABLE_READ) /subsystem=infinispan/cache-container=web/invalidation-cache=rhdg/component=transaction:write-attribute(name=mode,value=BATCH) /subsystem=infinispan/cache-container=web/invalidation-cache=rhdg/store=remote:add(remote-servers=["remote-rhdg-server1","remote-rhdg-server2"], cache=default, socket-timeout=60000, passivation=false, purge=false, shared=true)
結果の XML
<subsystem xmlns="urn:jboss:domain:infinispan:7.0"> ... <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan" statistics-enabled="true"> <transport lock-timeout="60000"/> <invalidation-cache name="rhdg" mode="SYNC"> <locking isolation="REPEATABLE_READ"/> <transaction mode="BATCH"/> <remote-store cache="default" socket-timeout="60000" remote-servers="remote-rhdg-server1 remote-rhdg-server2" passivation="false" purge="false" shared="true"/> </invalidation-cache> ... </cache-container> </subsystem>
キャッシュ情報をアプリケーションの
jboss-web.xml
ファイルに追加します。以下の例では、web
はキャッシュコンテナーの名前で、rhdg
はこのコンテナーにある適切なキャッシュの名前になります。例:
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.rhdg</cache-name> </replication-config> </jboss-web>