XML-Dateien für die Konfiguration des HTTP-Sitzungsmanagers

Wenn Sie einen Container-Server starten, der HTTP-Sitzungsdaten speichert, können Sie die Standard-XML-Dateien verwenden, oder Sie können angepasste XML-Dateien verwenden. Diese Dateien erstellen bestimmte ObjectGrid-Namen, die Anzahl der Replikate usw.

Position der Beispieldateien

Diese XML-Dateien werden für eine eigenständige Installation in WXS-Installationsstammverzeichnis/ObjectGrid/session/samples und für eine Installation von WebSphere eXtreme Scale in einer Zelle von WebSphere Application Server in WAS-Stammverzeichnis/optionalLibraries/ObjectGrid/session/samples gepackt.

Integriertes XML-Paket

Wenn Sie ein integriertes Szenario konfigurieren, wird der Container-Server auf der Web-Container-Schicht gestartet. Verwenden Sie die Datei objectGrid.xml und die Datei objectGridDeployment.xml, die standardmäßig bereitgestellt werden. Sie können diese Dateien aktualisieren, um das Verhalten des HTTP-Sitzungsmanagers anzupassen.
Abbildung 1. Datei 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>
Werte, die Sie ändern können:
ObjectGrid-Attribut "name"
Der Wert muss mit den folgenden Werten in anderen Konfigurationsdateien übereinstimmen:
  • Eigenschaft objectGridName in der Datei splicer.properties, die verwendet wird, um die Webanwendung zu binden
  • Attribut objectgridName in der Datei objectGridDeployment.xml
Wenn Sie mehrere Anwendungen haben und möchten, dass die Sitzungsdaten in unterschiedlichen Datengrids gespeichert werden, müssen diese Anwendungen unterschiedliche Wert für das ObjectGrid-Attribut "name" haben.
ObjectGrid-Attribut "txTimeout"
Dieser Wert bestimmt, wie viele Sekunden eine Transaktion offen bleiben darf, bevor der Container-Server die Überschreitung des Transaktionszeitlimits auslöst. Der Standardwert sind 30 Sekunden und kann je nach Umgebung geändert werden. Wenn die HTTP-Sitzungspersistenz mit einem höheren Wert als null für den Servletkontextinitialisierungsparameter replicationInterval definiert wird, werden Transaktionen in einem Thread zu Stapeln zusammengefasst. Wenn die Eigenschaft replicationInterval auf 0 gesetzt ist, wird eine Transaktion gewöhnlich gestartet, wenn eine Webanwendung ein gültiges HttpSession-Objekt abruft. Die Transaktion wird am Ende der Webanwendungsanforderung festgeschrieben. Wenn in Ihrer Umgebung Anforderungen ausgeführt werden, die länger als 30 Sekunden dauern, setzen Sie diesen Wert entsprechend.
Werte, die Sie nicht ändern können:
ObjectGridEventListener
Die ObjectGridEventListener-Zeile kann nicht geändert werden und wird intern verwendet.
objectgridSessionMetadata
Die objectgridSessionMetadata-Zeile verweist auf die Map, in der die Metadaten der HTTP-Sitzung gespeichert sind. Es gibt einen Eintrag für jede in diesem Datengrid gespeicherte HTTP-Sitzung in dieser Map.
objectgridSessionTTL.*
Dieser Wert kann nicht geändert werden und ist für spätere Verwendung bestimmt.
objectgridSessionAttribute.*
Der objectgridSessionAttribute.*-Text definiert eine dynamische Map. Dieser Wert wird verwendet, um die Map zu erstellen, in der HTTP-Sitzungsattribute gespeichert werden, wenn der Parameter fragmentedSession in der Datei splicer.properties auf true gesetzt ist. Diese dynamische Map hat den Namen objectgridSessionAttribute. Auf der Basis dieser Schablone wird eine weitere Map mit dem Namen objectgridSessionAttributeEvicted erstellt, in der Sitzungen gespeichert werden, die das zulässige Zeitlimit überschritten haben, aber vom Webcontainer nicht ungültig gemacht wurden.
Die MapEventListener-Zeile ist intern und kann nicht geändert werden.
Abbildung 2. Datei 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>
Werte, die Sie ändern können:
ObjectGrid-Attribut "name"
Der Wert muss mit den folgenden Werten in anderen Konfigurationsdateien übereinstimmen:
  • Eigenschaft objectGridName in der Datei splicer.properties, die verwendet wird, um die Webanwendung zu binden
  • Das ObjectGrid-Attribut name in der Datei objectGrid.xml.
Wenn Sie mehrere Anwendungen haben und möchten, dass die Sitzungsdaten in unterschiedlichen Datengrids gespeichert werden, müssen diese Anwendungen unterschiedliche Wert für das ObjectGrid-Attribut "name" haben.
Attribute des Elements "mapSet"
Sie können alle mapSet-Eigenschaften mit Ausnahme des Attributs "placementStrategy" ändern.
Name
Kann in jeden Wert aktualisiert werden.
numberOfPartitions
Gibt die Anzahl primärer Partitionen an, die in jedem Server gestartet werden, der die Webanwendung enthält. Wenn Sie Partitionen hinzufügen, werden die Daten für den Fall eines Failovers breiter verteilt. Der Standardwert sind 5 Partitionen und reicht für die meisten Anwendungen aus.
minSyncReplicas, maxSyncReplicas und maxAsyncReplicas
Gibt die Anzahl und den Typ der Replikate an, in denen die HTTP-Sitzungsdaten gespeichert werden. Standardmäßig wird 1 asynchrones Replikat verwendet, das für die meisten Anwendungen ausreicht. Synchrone Replikation findet im Anforderungspfad statt, was die Antwortzeiten für die Webanwendung erhöhen kann.
developmentMode
Informiert den eXtreme-Scale-Verteilungsservice darüber, ob die Replikat-Shards für eine Partition auf demselben Knoten wie das primäre Shards verteilt werden können. Sie können den Wert in einer Entwicklungsumgebung auf "true" setzen, sollten diese Funktion in einer Produktionsumgebung aber inaktivieren, weil der Ausfall eines Knotens zum Verlust von Sitzungsdaten führen könnte.
placementStrategy
Ändern Sie den Wert dieses Attributs nicht.
Der Rest der Datei verweist auf dieselben Map-Namen, die auch in der Datei objectGrid.xml enthalten sind. Diese Namen können nicht geändert werden.
Werte, die Sie nicht ändern können:
  • Attribut "placementStrategy" im Element "mapSet"

Fernes XML-Paket

Wenn Sie den Fernmodus verwenden, in dem die Container als eigenständige Prozesse ausgeführt werden, müssen Sie die Datei objectGridStandAlone.xml und die Datei objectGridDeploymentStandAlone.xml verwenden, um die Prozesse zu starten. Sie können diese Dateien aktualisieren, um die Konfiguration zu ändern.
Abbildung 3. Datei 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>
Werte, die Sie ändern können:
ObjectGrid-Attribut "name"
Der Wert muss mit den folgenden Werten in anderen Konfigurationsdateien übereinstimmen:
  • Eigenschaft objectGridName in der Datei splicer.properties, die verwendet wird, um die Webanwendung zu binden
  • Attribut objectgridName in der Datei objectGridStandAlone.xml
Wenn Sie mehrere Anwendungen haben und möchten, dass die Sitzungsdaten in unterschiedlichen Datengrids gespeichert werden, müssen diese Anwendungen unterschiedliche Wert für das ObjectGrid-Attribut "name" haben.
ObjectGrid-Attribut "txTimeout"
Dieser Wert bestimmt, wie viele Sekunden eine Transaktion offen bleiben darf, bevor der Container-Server die Überschreitung des Transaktionszeitlimits auslöst. Der Standardwert sind 30 Sekunden und kann je nach Umgebung geändert werden. Wenn die HTTP-Sitzungspersistenz mit einem höheren Wert als null für den Servletkontextinitialisierungsparameter replicationInterval definiert wird, werden Transaktionen in einem Thread zu Stapeln zusammengefasst. Wenn die Eigenschaft replicationInterval auf 0 gesetzt ist, wird eine Transaktion gewöhnlich gestartet, wenn eine Webanwendung ein gültiges HttpSession-Objekt abruft. Die Transaktion wird am Ende der Webanwendungsanforderung festgeschrieben. Wenn in Ihrer Umgebung Anforderungen ausgeführt werden, die länger als 30 Sekunden dauern, setzen Sie diesen Wert entsprechend.
Werte, die Sie nicht ändern können:
ObjectGridEventListener
Die ObjectGridEventListener-Zeile kann nicht geändert werden und wird intern verwendet.
objectgridSessionMetadata
Die objectgridSessionMetadata-Zeile verweist auf die Map, in der die Metadaten der HTTP-Sitzung gespeichert sind. Es gibt einen Eintrag für jede in diesem Datengrid gespeicherte HTTP-Sitzung in dieser Map.
objectgridSessionTTL.*
Dieser Wert kann nicht geändert werden und ist für spätere Verwendung bestimmt.
objectgridSessionAttribute.*
Der objectgridSessionAttribute.*-Text definiert eine dynamische Map. Dieser Wert wird verwendet, um die Map zu erstellen, in der HTTP-Sitzungsattribute gespeichert werden, wenn der Parameter fragmentedSession in der Datei splicer.properties auf true gesetzt ist. Diese dynamische Map hat den Namen objectgridSessionAttribute. Auf der Basis dieser Schablone wird eine weitere Map mit dem Namen objectgridSessionAttributeEvicted erstellt, in der Sitzungen gespeichert werden, die das zulässige Zeitlimit überschritten haben, aber vom Webcontainer nicht ungültig gemacht wurden.
Die MetadataMapListener-Zeile ist intern und kann nicht geändert werden.
Abbildung 4. Datei 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>
Werte, die Sie ändern können:
ObjectGrid-Attribut "name"
Der Wert muss mit den folgenden Werten in anderen Konfigurationsdateien übereinstimmen:
  • Eigenschaft objectGridName in der Datei splicer.properties, die verwendet wird, um die Webanwendung zu binden
  • Das ObjectGrid-Attribut name in der Datei objectGrid.xml.
Wenn Sie mehrere Anwendungen haben und möchten, dass die Sitzungsdaten in unterschiedlichen Datengrids gespeichert werden, müssen diese Anwendungen unterschiedliche Wert für das ObjectGrid-Attribut "name" haben.
Attribute des Elements "mapSet"
Sie können alle mapSet-Eigenschaften mit Ausnahme des Attributs "placementStrategy" ändern.
Name
Kann in jeden Wert aktualisiert werden.
numberOfPartitions
Gibt die Anzahl primärer Partitionen an, die in jedem Server gestartet werden, der die Webanwendung enthält. Wenn Sie Partitionen hinzufügen, werden die Daten für den Fall eines Failovers breiter verteilt. Der Standardwert sind 5 Partitionen und reicht für die meisten Anwendungen aus.
minSyncReplicas, maxSyncReplicas und maxAsyncReplicas
Gibt die Anzahl und den Typ der Replikate an, in denen die HTTP-Sitzungsdaten gespeichert werden. Standardmäßig wird 1 asynchrones Replikat verwendet, das für die meisten Anwendungen ausreicht. Synchrone Replikation findet im Anforderungspfad statt, was die Antwortzeiten für die Webanwendung erhöhen kann.
developmentMode
Informiert den eXtreme-Scale-Verteilungsservice darüber, ob die Replikat-Shards für eine Partition auf demselben Knoten wie das primäre Shards verteilt werden können. Sie können den Wert in einer Entwicklungsumgebung auf "true" setzen, sollten diese Funktion in einer Produktionsumgebung aber inaktivieren, weil der Ausfall eines Knotens zum Verlust von Sitzungsdaten führen könnte.
placementStrategy
Ändern Sie den Wert dieses Attributs nicht.
Der Rest der Datei verweist auf dieselben Map-Namen, die auch in der Datei objectGrid.xml enthalten sind. Diese Namen können nicht geändert werden.
Werte, die Sie nicht ändern können:
  • Attribut "placementStrategy" im Element "mapSet"