Arquivos XML para Configuração do Gerenciador de Sessões HTTP

Quando você inicia um servidor de contêiner que armazena dados da sessão HTTP, é possível usar os arquivos XML padrão ou você pode especificar arquivos XML customizados. Estes arquivos criam nomes de ObjectGrid específicos, número de réplicas, etc.

Local dos Arquivos de Amostra

Esses arquivos XML são compactados no diretório wxs_install_root/ObjectGrid/session/samples para uma instalação independente ou no diretório was_root/optionalLibraries/ObjectGrid/session/samples para o WebSphere eXtreme Scale instalado em uma célula do WebSphere Application Server .

Pacote XML Integrado

Se estiver configurando um cenário integrado, o servidor de contêiner iniciará na camada do contêiner da web. Use o arquivo objectGrid.xml e o arquivo objectGridDeployment.xml, os quais são fornecidos por padrão. É possível atualizar estes arquivos para customizar o comportamento do gerenciador de sessões HTTP.
Figura 1. Arquivo 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>
Os valores que podem ser alterados:
Atributo de nome do ObjectGrid
O valor deve corresponder aos valores a seguir em outros arquivos de configuração:
  • A propriedade objectGridName no arquivo splicer.properties que é usado para unir o aplicativo da Web.
  • O atributo objectgridName no arquivo objectGridDeployment.xml.
 Se você tiver diversos aplicativos, e desejar que os dados da sessão sejam armazenados em diferentes grades de dados, esses aplicativos deverão ter diferentes valores de atributo de nome do ObjectGrid.
Atributo txTimeout do ObjectGrid
Este valor determina quantos segundos uma transação pode ser aberta antes que o servidor de contêiner acione a transação para atingir o tempo limite. O padrão é 30 segundos e pode ser alterado, dependendo do ambiente. Se a persistência de sessão HTTP for configurada com o valor do parâmetro de inicialização de contexto de servlet replicationInterval configurado como maior que zero, as transações serão posicionadas em lote em um encadeamento. Se a propriedade replicationInterval for configurada como 0, uma transação normalmente será iniciada quando um aplicativo da web recuperar um objeto HttpSession válido. A transação é confirmada no final da solicitação de aplicativo da web. Se o seu ambiente possuir solicitações que demoram mais do que 30 segundos, configure este valor adequadamente.
Os valores que não podem ser alterados:
ObjectGridEventListener
A linha do ObjectGridEventListener não pode ser alterada e é usada internamente.
objectgridSessionMetadata
A linha de objectgridSessionMetadata se refere ao mapa no qual os metadados da sessão HTTP são armazenados. Há uma entrada para cada sessão HTTP armazenada na grade de dados neste mapa.
objectgridSessionTTL.*
Este valor não pode ser alterado e destina-se para uso futuro.
objectgridSessionAttribute.*
O texto objectgridSessionAttribute.* define um mapa dinâmico. Este valor é usado para criar o mapa no qual atributos de sessão HTTP são armazenados quando o parâmetro fragmentedSession é configurado como true no arquivo splicer.properties. Este mapa dinâmico é chamado de objectgridSessionAttribute. Um outro mapa é criado com base neste modelo chamado objectgridSessionAttributeEvicted, o qual armazena sessões que atingiram o tempo limite, mas o contêiner da web não foi invalidado.
A linha MapEventListener é interna e não pode ser modificada
Figura 2. Arquivo 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>
Os valores que podem ser alterados:
Atributo de nome do ObjectGrid
O valor deve corresponder aos valores a seguir em outros arquivos de configuração:
  • A propriedade objectGridName no arquivo splicer.properties que é usado para unir o aplicativo da Web.
  • O atributos name do ObjectGrid no arquivo objectGrid.xml.
 Se você tiver diversos aplicativos, e desejar que os dados da sessão sejam armazenados em diferentes grades de dados, esses aplicativos deverão ter diferentes valores de atributo de nome do ObjectGrid.
Atributos do elemento mapSet
É possível alterar todas as propriedades mapSet, exceto para o atributo placementStrategy.
Nome
Pode ser atualizado para qualquer valor.
numberOfPartitions
Especifica o número de partições primárias que são iniciadas em cada servidor que está hospedando o aplicativo da Web. Conforme você inclui partições, os dados se tornam mais espalhados no caso de um failover. O valor padrão é de 5 partições e é adequado para a maioria dos aplicativos.
minSyncReplicas, maxSyncReplicas e maxAsyncReplicas
Especifica o número e o tipo de réplicas que armazenam os dados da sessão HTTP. O padrão é 1 réplica assíncrona, o qual é adequado para a maioria dos aplicativos. A replicação síncrona ocorre durante o caminho do pedido, que pode aumentar os tempos de resposta para seu aplicativo da Web.
developmentMode
Informa o serviço de posicionamento do eXtreme Scale se os shards de réplica para uma partição podem ser posicionados no mesmo nó que seu shard primário. É possível configurar o valor para true em um ambiente de desenvolvimento, mas desative esta função em um ambiente de produção, pois uma falha do nó pode causar a perda de dados da sessão.
placementStrategy
Não altere o valor deste atributo.
O restante do arquivo faz referência aos mesmos nomes do mapa que no arquivo objectGrid.xml. Esses nomes não podem ser alterados.
Valores que não podem ser alterados:
  • O atributo placementStrategy no elemento mapSet.

Pacote XML Remoto

Quando você está usando o modo remoto, no qual os contêineres são executados como processos independentes, você deve usar o arquivo objectGridStandAlone.xml e o arquivo objectGridDeploymentStandAlone.xml para iniciar os processos. É possível atualizar esses arquivos para modificar a configuração.
Figura 3. Arquivo 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>
Os valores que podem ser alterados:
Atributo de nome do ObjectGrid
O valor deve corresponder aos valores a seguir em outros arquivos de configuração:
  • A propriedade objectGridName no arquivo splicer.properties que é usado para unir o aplicativo da Web.
  • O atributo objectgridName no arquivo objectGridStandAlone.xml.
 Se você tiver diversos aplicativos, e desejar que os dados da sessão sejam armazenados em diferentes grades de dados, esses aplicativos deverão ter diferentes valores de atributo de nome do ObjectGrid.
Atributo txTimeout do ObjectGrid
Este valor determina quantos segundos uma transação pode ser aberta antes que o servidor de contêiner acione a transação para atingir o tempo limite. O padrão é 30 segundos e pode ser alterado, dependendo do ambiente. Se a persistência de sessão HTTP for configurada com o valor do parâmetro de inicialização de contexto de servlet replicationInterval configurado como maior que zero, as transações serão posicionadas em lote em um encadeamento. Se a propriedade replicationInterval for configurada como 0, uma transação normalmente será iniciada quando um aplicativo da web recuperar um objeto HttpSession válido. A transação é confirmada no final da solicitação de aplicativo da web. Se o seu ambiente possuir solicitações que demoram mais do que 30 segundos, configure este valor adequadamente.
Os valores que não podem ser alterados:
ObjectGridEventListener
A linha do ObjectGridEventListener não pode ser alterada e é usada internamente.
objectgridSessionMetadata
A linha de objectgridSessionMetadata se refere ao mapa no qual os metadados da sessão HTTP são armazenados. Há uma entrada para cada sessão HTTP armazenada na grade de dados neste mapa.
objectgridSessionTTL.*
Este valor não pode ser alterado e destina-se para uso futuro.
objectgridSessionAttribute.*
O texto objectgridSessionAttribute.* define um mapa dinâmico. Este valor é usado para criar o mapa no qual atributos de sessão HTTP são armazenados quando o parâmetro fragmentedSession é configurado como true no arquivo splicer.properties. Este mapa dinâmico é chamado de objectgridSessionAttribute. Um outro mapa é criado com base neste modelo chamado objectgridSessionAttributeEvicted, o qual armazena sessões que atingiram o tempo limite, mas o contêiner da web não foi invalidado.
A linha MetadataMapListener é interna e não pode ser modificada.
Figura 4. Arquivo 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>
Os valores que podem ser alterados:
Atributo objectgridName
O valor deve corresponder aos valores a seguir em outros arquivos de configuração:
  • A propriedade objectGridName no arquivo splicer.properties que é usado para unir o aplicativo da Web.
  • O atributos name do ObjectGrid no arquivo objectGrid.xml.
Se tiver diversos aplicativos, e desejar que os dados da sessão sejam armazenados em diferentes grades de dados, esses aplicativos deverão ter diferentes valores de atributo de nome do ObjectGrid.
Atributos do elemento mapSet
É possível alterar todas as propriedades mapSet, exceto para o atributo placementStrategy.
Nome
Pode ser atualizado para qualquer valor.
numberOfPartitions
Especifica o número de partições primárias que são iniciadas em cada servidor que está hospedando o aplicativo da Web. Conforme você inclui partições, os dados se tornam mais espalhados no caso de um failover. O valor padrão é de 5 partições e é adequado para a maioria dos aplicativos.
minSyncReplicas, maxSyncReplicas e maxAsyncReplicas
Especifica o número e o tipo de réplicas que armazenam os dados da sessão HTTP. O padrão é 1 réplica assíncrona, o qual é adequado para a maioria dos aplicativos. A replicação síncrona ocorre durante o caminho do pedido, que pode aumentar os tempos de resposta para seu aplicativo da Web.
developmentMode
Informa o serviço de posicionamento do eXtreme Scale se os shards de réplica para uma partição podem ser posicionados no mesmo nó que seu shard primário. É possível configurar o valor para true em um ambiente de desenvolvimento, mas desative esta função em um ambiente de produção, pois uma falha do nó pode causar a perda de dados da sessão.
placementStrategy
Não altere o valor deste atributo.
O restante do arquivo faz referência aos mesmos nomes do mapa que no arquivo objectGrid.xml. Esses nomes não podem ser alterados.
Valores que não podem ser alterados:
  • O atributo placementStrategy no elemento mapSet.