Archivos XML para la configuración del gestor de sesiones HTTP

Cuando inicia un servidor de contenedor que almacena datos de sesión HTTP, puede utilizar los archivos XML predeterminados o puede especificar archivos XML personalizados. Estos archivos crean nombres de ObjectGrid específicos, número de réplicas, etc.

Ubicación de los archivos de ejemplo

Estos archivos XML se empaquetan en raíz_intal_wxs/ObjectGrid/session/samples para una instalación autónoma o raíz_was/optionalLibraries/ObjectGrid/session/samples para WebSphere eXtreme Scale instalado en una célula de WebSphere Application Server.

Paquete XML incorporado

Si está configurando un escenario incorporado, el servidor de contenedor se inicia en el nivel de contenedor web. Utilice el archivo objectGrid.xml y el archivo objectGridDeployment.xml, que se proporcionan de forma predeterminada. Puede actualizar estos archivos para personalizar el comportamiento del gestor de sesiones HTTP.
Figura 1. Archivo 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>
Valores que puede cambiar:
Atributo de nombre ObjectGrid
El valor debe coincidir con los valores siguientes en otros archivos de configuración:
  • La propiedad objectGridName del archivo splicer.properties que se utiliza para unir la aplicación web.
  • El atributo objectgridName del archivo objectGridDeployment.xml.
Si tiene varias aplicaciones y desea que los datos de sesión se almacenen en cuadrículas de datos diferentes, esas aplicaciones deben tener valores de atributo de nombre de ObjectGrid diferentes.
Atributo txTimeout de ObjectGrid
Este valor determina durante cuántos segundos puede estar abierta una transacción antes de que el servidor de contenedor desencadene un tiempo de espera excedido para la transacción. El valor predeterminado es 30 segundos y se puede modificar en función del entorno. Si la persistencia de sesiones HTTP se configura con el parámetro de inicialización de contexto de servlet de replicationInterval establecido en un valor mayor que cero, las transacciones se procesarán por lotes en una hebra. Si la propiedad replicationInterval se establece en 0, una transacción normalmente empieza cuando una aplicación web recupera un objeto HttpSession válido. La transacción se confirma al final de la solicitud de aplicación web. Si el entorno tiene solicitudes que tardan más de 30 segundos, establezca este valor como corresponda.
Valores que no puede cambiar:
ObjectGridEventListener
La línea ObjectGridEventListener no se puede cambiar y se utiliza internamente.
objectgridSessionMetadata
La línea objectgridSessionMetadata hace referencia a la correlación donde se almacenan los metadatos de sesión HTTP. Hay una entrada para cada sesión HTTP almacenada en la cuadrícula de datos de esta correlación.
objectgridSessionTTL.*
Este valor no se puede cambiar y es para uso futuro.
objectgridSessionAttribute.*
El texto objectgridSessionAttribute.* define una correlación dinámica. Este valor se utiliza para crear la correlación en la que se almacenan los atributos de sesión HTTP cuando el parámetro fragmentedSession se establece en true en el archivo splicer.properties. Esta correlación dinámica se denomina objectgridSessionAttribute. Se crea otra correlación basándose en esta plantilla denominada objectgridSessionAttributeEvicted, que almacena sesiones que han excedido el tiempo de espera pero que el contenedor web no ha invalidado.
La línea MapEventListener es interna y no se puede modificar
Figura 2. Archivo 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>
Valores que puede cambiar:
Atributo de nombre ObjectGrid
El valor debe coincidir con los valores siguientes en otros archivos de configuración:
  • La propiedad objectGridName del archivo splicer.properties que se utiliza para unir la aplicación web.
  • El atributo name de ObjectGrid del archivo objectGrid.xml.
Si tiene varias aplicaciones y desea que los datos de sesión se almacenen en cuadrículas de datos diferentes, esas aplicaciones deben tener valores de atributo de nombre de ObjectGrid diferentes.
Atributos de elemento mapSet
Puede cambiar todas las propiedades de mapSet excepto las del atributo placementStrategy.
Name
Se puede actualizar con cualquier valor.
numberOfPartitions
Especifica el número de particiones primarias que se han iniciado en cada servidor en que se aloja la aplicación web. A medida que añade las particiones, los datos se extienden más en el caso de una migración tras error. El valor predeterminado es 5 particiones y es correcto para la mayoría de las aplicaciones.
minSyncReplicas, maxSyncReplicas y maxAsyncReplicas
Especifica el número y tipo de réplicas que almacenan los datos de sesión HTTP. El valor predeterminado es 1 réplica asíncrona, que es correcto para la mayoría de las aplicaciones. La réplica síncrona se produce durante la vía de acceso de solicitud, que puede aumentar los tiempos de respuesta de su aplicación web.
developmentMode
Informa al servicio de ubicación de eXtreme Scale si los fragmentos réplica de una partición se pueden ubicar en el mismo nodo que su réplica primaria. Puede establecer el valor en true en un entorno de desarrollo, pero inhabilite esta función en un entorno de producción porque una anomalía en un nodo podría provocar la pérdida de los datos de sesión.
placementStrategy
No cambie el valor de este atributo.
El resto del archivo hace referencia a los mismos nombres de correlación que en el archivo objectGrid.xml. No se pueden cambiar estos nombres.
Valores que no puede cambiar:
  • El atributo placementStrategy del elemento mapSet.

Paquete XML remoto

Cuando esté utilizando la modalidad remota, donde los contenedores se ejecutan como procesos autónomos, deberá utilizar el archivo objectGridStandAlone.xml y el archivo objectGridDeploymentStandAlone.xml para iniciar los procesos. Puede actualizar estos archivos para modificar la configuración.
Figura 3. Archivo 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>
Valores que puede cambiar:
Atributo de nombre ObjectGrid
El valor debe coincidir con los valores siguientes en otros archivos de configuración:
  • La propiedad objectGridName del archivo splicer.properties que se utiliza para unir la aplicación web.
  • El atributo objectgridName del archivo objectGridStandAlone.xml.
Si tiene varias aplicaciones y desea que los datos de sesión se almacenen en cuadrículas de datos diferentes, esas aplicaciones deben tener valores de atributo de nombre de ObjectGrid diferentes.
Atributo txTimeout de ObjectGrid
Este valor determina durante cuántos segundos puede estar abierta una transacción antes de que el servidor de contenedor desencadene un tiempo de espera excedido para la transacción. El valor predeterminado es 30 segundos y se puede modificar en función del entorno. Si la persistencia de sesiones HTTP se configura con el parámetro de inicialización de contexto de servlet de replicationInterval establecido en un valor mayor que cero, las transacciones se procesarán por lotes en una hebra. Si la propiedad replicationInterval se establece en 0, una transacción normalmente empieza cuando una aplicación web recupera un objeto HttpSession válido. La transacción se confirma al final de la solicitud de aplicación web. Si el entorno tiene solicitudes que tardan más de 30 segundos, establezca este valor como corresponda.
Valores que no puede cambiar:
ObjectGridEventListener
La línea ObjectGridEventListener no se puede cambiar y se utiliza internamente.
objectgridSessionMetadata
La línea objectgridSessionMetadata hace referencia a la correlación donde se almacenan los metadatos de sesión HTTP. Hay una entrada para cada sesión HTTP almacenada en la cuadrícula de datos de esta correlación.
objectgridSessionTTL.*
Este valor no se puede cambiar y es para uso futuro.
objectgridSessionAttribute.*
El texto objectgridSessionAttribute.* define una correlación dinámica. Este valor se utiliza para crear la correlación en la que se almacenan los atributos de sesión HTTP cuando el parámetro fragmentedSession se establece en true en el archivo splicer.properties. Esta correlación dinámica se denomina objectgridSessionAttribute. Se crea otra correlación basándose en esta plantilla denominada objectgridSessionAttributeEvicted, que almacena sesiones que han excedido el tiempo de espera pero que el contenedor web no ha invalidado.
La línea MetadataMapListener es interna y no se puede modificar.
Figura 4. Archivo 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>
Valores que puede cambiar:
Atributo objectgridName
El valor debe coincidir con los valores siguientes en otros archivos de configuración:
  • La propiedad objectGridName del archivo splicer.properties que se utiliza para unir la aplicación web.
  • El atributo name de ObjectGrid del archivo objectGrid.xml.
Si tiene varias aplicaciones y desea que los datos de sesión se almacenen en cuadrículas de datos diferentes, esas aplicaciones deben tener valores de atributo de nombre de ObjectGrid diferentes.
Atributos de elemento mapSet
Puede cambiar todas las propiedades de mapSet excepto las del atributo placementStrategy.
Name
Se puede actualizar con cualquier valor.
numberOfPartitions
Especifica el número de particiones primarias que se han iniciado en cada servidor en que se aloja la aplicación web. A medida que añade las particiones, los datos se extienden más en el caso de una migración tras error. El valor predeterminado es 5 particiones y es correcto para la mayoría de las aplicaciones.
minSyncReplicas, maxSyncReplicas y maxAsyncReplicas
Especifica el número y tipo de réplicas que almacenan los datos de sesión HTTP. El valor predeterminado es 1 réplica asíncrona, que es correcto para la mayoría de las aplicaciones. La réplica síncrona se produce durante la vía de acceso de solicitud, que puede aumentar los tiempos de respuesta de su aplicación web.
developmentMode
Informa al servicio de ubicación de eXtreme Scale si los fragmentos réplica de una partición se pueden ubicar en el mismo nodo que su réplica primaria. Puede establecer el valor en true en un entorno de desarrollo, pero inhabilite esta función en un entorno de producción porque una anomalía en un nodo podría provocar la pérdida de los datos de sesión.
placementStrategy
No cambie el valor de este atributo.
El resto del archivo hace referencia a los mismos nombres de correlación que en el archivo objectGrid.xml. No se pueden cambiar estos nombres.
Valores que no puede cambiar:
  • El atributo placementStrategy del elemento mapSet.