HTTP セッション・データを保管するコンテナー・サーバーを始動するときは、デフォルトの XML ファイルを使用することもできるし、カスタマイズされた XML ファイルを指定することもできます。これらのファイルは、特定の ObjectGrid 名、レプリカ数などを作成します。
サンプル・ファイルの場所
これらの XML ファイルは、スタンドアロンのインストール済み環境の場合は
wxs_install_root/ObjectGrid/session/samples の中に、
WebSphere® Application Server セルにインストールされた
WebSphere eXtreme
Scale の場合は
was_root/optionalLibraries/ObjectGrid/session/samples の中にパッケージされています。
組み込み XML パッケージ
組み込みシナリオを構成する場合、コンテナー・サーバーは Web コンテナー層で始動します。デフォルトで提供される、
objectGrid.xml ファイルと
objectGridDeployment.xml ファイルを使用します。これらのファイルを更新して HTTP セッション・マネージャーの振る舞いをカスタマイズすることができます。
図 1. objectGrid.xml ファイル<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd" xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="session" txTimeout="30">
<bean id="ObjectGridEventListener" className="com.ibm.ws.xs.sessionmanager.SessionHandleManager"/>
<backingMap name="objectgridSessionMetadata" pluginCollectionRef="objectgridSessionMetadata" readOnly="false"
lockStrategy="PESSIMISTIC" ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600" copyMode="NO_COPY"/>
<backingMap name="objectgridSessionAttribute.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC"
ttlEvictorType="NONE" copyMode="NO_COPY"/>
<backingMap name="objectgridSessionTTL.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC"
ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600" copyMode="NO_COPY"/>
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="objectgridSessionMetadata">
<bean id="MapEventListener" className="com.ibm.ws.xs.sessionmanager.MetadataMapListener"/>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
- 変更可能な値:
- ObjectGrid name 属性
- 値は、他の構成ファイル内の次の値と一致していなければなりません。
- Web アプリケーションの接続に使用される splicer.properties ファイル内の objectGridName プロパティー。
- objectGridDeployment.xml ファイル内の objectgridName 属性。
複数のアプリケーションを持っていて、セッション・データを異なるデータ・グリッドに保管したい場合は、それらのアプリケーションが異なる ObjectGrid name 属性値を持つ必要があります。
- ObjectGrid txTimeout 属性
- この値は、トランザクションがオープン状態を持続できる秒数を決定します。この時間を過ぎると、コンテナー・サーバーがトランザクションのタイムアウトをトリガーします。
デフォルトは 30 秒で、環境に応じて変更できます。
HTTP セッション・パーシスタンスが、replicationInterval サーブレット・コンテキスト初期化パラメーター値がゼロより大きい値に設定されて構成されている場合、トランザクションはスレッド上でバッチ処理されます。
replicationInterval プロパティーが 0 に設定されている場合、トランザクションは、通常、Web アプリケーションが有効な
HttpSession オブジェクトを取得したときに開始します。トランザクションは、Web アプリケーション要求の終了時にコミットされます。
使用している環境に 30 秒より長くかかる要求がある場合は、それに合わせてこの値を設定してください。
- 変更不可の値:
- ObjectGridEventListener
- ObjectGridEventListener 行は変更不可で、内部で使用されます。
- objectgridSessionMetadata
- objectgridSessionMetadata 行は HTTP セッション・メタデータが保管されるマップを参照します。このマップには、データ・グリッドに保管されている HTTP セッションごとに 1 つのエントリーがあります。
- objectgridSessionTTL.*
- この値は変更できません。また、将来使用されるものです。
- objectgridSessionAttribute.*
- objectgridSessionAttribute.* テキストは動的マップを定義します。この値は、splicer.properties ファイル内で fragmentedSession パラメーターが true に設定されている場合に、HTTP セッションの属性が保管されるマップの作成に使用されます。この動的マップは、objectgridSessionAttribute と呼ばれます。このテンプレートに基づいて、objectgridSessionAttributeEvicted と呼ばれる別のマップが作成されます。このマップには、タイムアウトになったが Web コンテナーが無効にしなかったセッションが保管されます。
MapEventListener 行は内部用で、変更はできません。
図 2. objectGridDeployment.xml ファイル<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="session">
<mapSet name="sessionMapSet" numberOfPartitions="5" minSyncReplicas="0" maxSyncReplicas="0"
maxAsyncReplicas="1" developmentMode="false" placementStrategy="PER_CONTAINER">
<map ref="objectgridSessionMetadata"/>
<map ref="objectgridSessionAttribute.*"/>
<map ref="objectgridSessionTTL.*"/>
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
- 変更可能な値:
- ObjectGrid name 属性
- 値は、他の構成ファイル内の次の値と一致していなければなりません。
- Web アプリケーションの接続に使用される splicer.properties ファイル内の objectGridName プロパティー。
- objectGrid.xml ファイル内の ObjectGrid name 属性。
複数のアプリケーションを持っていて、セッション・データを異なるデータ・グリッドに保管したい場合は、それらのアプリケーションが異なる ObjectGrid name 属性値を持つ必要があります。
- mapSet エレメント属性
- placementStrategy 属性を除くすべての mapSet プロパティーは変更することができます。
- Name
- 任意の値に更新できます。
- numberOfPartitions
- Web アプリケーションをホスティングしている各サーバーで開始されるプライマリー区画の数を指定します。区画を追加すると、フェイルオーバー時にデータがより散らばった状態になります。デフォルト値は 5 区画であり、これはほとんどのアプリケーションで問題のない値です。
- minSyncReplicas、maxSyncReplicas、および maxAsyncReplicas
- HTTP セッション・データを格納するレプリカの数とタイプを指定します。デフォルトは 1 つの非同期レプリカであり、これはほとんどのアプリケーションで問題のない値です。同期レプリカ生成は要求パス中に行われますが、これによってご使用の Web アプリケーションの応答時間が長くなる場合があります。
- developmentMode
- 区画のレプリカ断片をそのプライマリー断片と同じノードに配置することができるかどうかを、eXtreme Scale 配置サービスに通知します。開発環境ではこの値を TRUE に設定できますが、ノード障害がセッション・データの損失を引き起こす場合があるため、実稼働環境ではこの機能を使用不可に設定してください。
- placementStrategy
- この属性の値は変更しないでください。
ファイルの残りの部分は objectGrid.xml ファイル内と同じマップ名を参照します。
これらの名前は変更できません。
変更不可の値: - mapSet エレメントの placementStrategy 属性
リモート XML パッケージ
コンテナーがスタンドアロン・プロセスとして実行されるリモート・モードを使用しているときは、これらのプロセスを開始するのに
objectGridStandAlone.xml ファイルおよび
objectGridDeploymentStandAlone.xml ファイルを使用する必要があります。これらのファイルを更新することで構成を変更することができます。
図 3. objectGridStandAlone.xml ファイル<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="session" txTimeout="30">
<bean id="ObjectGridEventListener" className="com.ibm.ws.xs.sessionmanager.SessionHandleManager"/>
<backingMap name="objectgridSessionMetadata" pluginCollectionRef="objectgridSessionMetadata"
readOnly="false" lockStrategy="PESSIMISTIC" ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600"
copyMode="COPY_TO_BYTES"/>
<backingMap name="objectgridSessionAttribute.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC"
ttlEvictorType="NONE" copyMode="COPY_TO_BYTES"/>
<backingMap name="objectgridSessionTTL.*" template="true" readOnly="false" lockStrategy="PESSIMISTIC"
ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3600" copyMode="COPY_TO_BYTES"/>
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="objectgridSessionMetadata">
<bean id="MapEventListener" className="com.ibm.ws.xs.sessionmanager.MetadataMapListener"/>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
- 変更可能な値:
- ObjectGrid name 属性
- 値は、他の構成ファイル内の次の値と一致していなければなりません。
- Web アプリケーションの接続に使用される splicer.properties ファイル内の objectGridName プロパティー。
- objectGridStandAlone.xml ファイル内の objectgridName 属性。
複数のアプリケーションを持っていて、セッション・データを異なるデータ・グリッドに保管したい場合は、それらのアプリケーションが異なる ObjectGrid name 属性値を持つ必要があります。
- ObjectGrid txTimeout 属性
- この値は、トランザクションがオープン状態を持続できる秒数を決定します。この時間を過ぎると、コンテナー・サーバーがトランザクションのタイムアウトをトリガーします。
デフォルトは 30 秒で、環境に応じて変更できます。
HTTP セッション・パーシスタンスが、replicationInterval サーブレット・コンテキスト初期化パラメーター値がゼロより大きい値に設定されて構成されている場合、トランザクションはスレッド上でバッチ処理されます。
replicationInterval プロパティーが 0 に設定されている場合、トランザクションは、通常、Web アプリケーションが有効な
HttpSession オブジェクトを取得したときに開始します。トランザクションは、Web アプリケーション要求の終了時にコミットされます。
使用している環境に 30 秒より長くかかる要求がある場合は、それに合わせてこの値を設定してください。
- 変更不可の値:
- ObjectGridEventListener
- ObjectGridEventListener 行は変更不可で、内部で使用されます。
- objectgridSessionMetadata
- objectgridSessionMetadata 行は HTTP セッション・メタデータが保管されるマップを参照します。このマップには、データ・グリッドに保管されている HTTP セッションごとに 1 つのエントリーがあります。
- objectgridSessionTTL.*
- この値は変更できません。また、将来使用されるものです。
- objectgridSessionAttribute.*
- objectgridSessionAttribute.* テキストは動的マップを定義します。この値は、splicer.properties ファイル内で fragmentedSession パラメーターが true に設定されている場合に、HTTP セッションの属性が保管されるマップの作成に使用されます。この動的マップは、objectgridSessionAttribute と呼ばれます。このテンプレートに基づいて、objectgridSessionAttributeEvicted と呼ばれる別のマップが作成されます。このマップには、タイムアウトになったが Web コンテナーが無効にしなかったセッションが保管されます。
MetadataMapListener 行は内部用で、変更はできません。
図 4. objectGridDeploymentStandAlone.xml ファイル<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="session">
<mapSet name="sessionMapSet" numberOfPartitions="5" minSyncReplicas="0" maxSyncReplicas="0"
maxAsyncReplicas="1" developmentMode="false" placementStrategy="PER_CONTAINER">
<map ref="objectgridSessionMetadata"/>
<map ref="objectgridSessionAttribute.*"/>
<map ref="objectgridSessionTTL.*"/>
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
- 変更可能な値:
- objectgridName 属性
- 値は、他の構成ファイル内の次の値と一致していなければなりません。
- Web アプリケーションの接続に使用される splicer.properties ファイル内の objectGridName プロパティー。
- objectGrid.xml ファイル内の ObjectGrid name 属性。
複数のアプリケーションを持っていて、セッション・データを異なるデータ・グリッドに保管したい場合は、それらのアプリケーションが異なる ObjectGrid name 属性値を持つ必要があります。
- mapSet エレメント属性
- placementStrategy 属性を除くすべての mapSet プロパティーは変更することができます。
- Name
- 任意の値に更新できます。
- numberOfPartitions
- Web アプリケーションをホスティングしている各サーバーで開始されるプライマリー区画の数を指定します。区画を追加すると、フェイルオーバー時にデータがより散らばった状態になります。デフォルト値は 5 区画であり、これはほとんどのアプリケーションで問題のない値です。
- minSyncReplicas、maxSyncReplicas、および maxAsyncReplicas
- HTTP セッション・データを格納するレプリカの数とタイプを指定します。デフォルトは 1 つの非同期レプリカであり、これはほとんどのアプリケーションで問題のない値です。同期レプリカ生成は要求パス中に行われますが、これによってご使用の Web アプリケーションの応答時間が長くなる場合があります。
- developmentMode
- 区画のレプリカ断片をそのプライマリー断片と同じノードに配置することができるかどうかを、eXtreme Scale 配置サービスに通知します。開発環境ではこの値を TRUE に設定できますが、ノード障害がセッション・データの損失を引き起こす場合があるため、実稼働環境ではこの機能を使用不可に設定してください。
- placementStrategy
- この属性の値は変更しないでください。
ファイルの残りの部分は objectGrid.xml ファイル内と同じマップ名を参照します。
これらの名前は変更できません。
変更不可の値: - mapSet エレメントの placementStrategy 属性