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"