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.