É possível usar um arquivo XML de configuração do ObjectGrid para alterar as configurações no lado do cliente.
Sobre Esta Tarefa
Para alterar as configurações em um cliente WebSphere eXtreme
Scale, você deve criar um arquivo XML do ObjectGrid cuja estrutura é semelhante ao arquivo que foi usado para o servidor de contêiner.
As seguintes configurações podem ser substituídas no cliente:
- Crie uma instância ObjectGrid específica do cliente.
- Copie o arquivo XML ObjectGrid que foi utilizado para abrir o
servidor.
- Edite o novo arquivo a ser customizado para o lado do cliente:
- Para configurar ou atualizar qualquer um dos atributos no
cliente, especifique um novo valor ou altere o valor existente.
- Para remover um plug-in do cliente, use a cadeia vazia como o valor para o atributo className.
- Para alterar um plug-in existente, especifique um novo valor para o atributo className.
- Também é possível incluir qualquer plug-in suportado para uma
substituição de cliente: TRANSACTION_CALLBACK,
OBJECTGRID_EVENT_LISTENER, EVICTOR, MAP_EVENT_LISTENER.
- Crie um cliente com o arquivo XML de substituição de cliente
recém criado.
- Crie um arquivo XML de configuração do ObjectGrid para o cliente cuja estrutura é semelhante ao arquivo que foi usado para o servidor de contêiner.
Suponha que o seguinte arquivo XML foi emparelhado com um arquivo XML de política de implementação, e esses arquivos foram usados para iniciar um servidor de contêiner.
companyGridServerSide.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="CompanyGrid">
<bean id="TransactionCallback"
className="com.company.MyTxCallback" />
<bean id="ObjectGridEventListener"
className="com.company.MyOgEventListener" />
<backingMap name="Customer"
pluginCollectionRef="customerPlugins"/>
<backingMap name="Item" />
<backingMap name="OrderLine" numberOfBuckets="1049"
timeToLive="1600" ttlEvictorType="LAST_ACCESS_TIME" />
<backingMap name="Order" lockStrategy="PESSIMISTIC"
pluginCollectionRef="orderPlugins" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="customerPlugins">
<bean id="Evictor"
className="com.ibm.websphere.objectGrid.plugins.builtins.LRUEvictor" />
<bean id="MapEventListener"
className="com.company.MyMapEventListener" />
</backingMapPluginCollection>
<backingMapPluginCollection id="orderPlugins">
<bean id="MapIndexPlugin"
className="com.company.MyMapIndexPlugin" />
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Em um servidor de contêiner, a instância do ObjectGrid denominada CompanyGrid se comporta conforme o definido pelo arquivo companyGridServerSide.xml. Por padrão, o cliente CompanyGrid tem as mesmas configurações que a
instância CompanyGrid em execução no servidor.
O seguinte arquivo XML ObjectGrid pode ser usado para especificar alguns dos atributos e plug-ins no cliente CompanyGrid.
companyGridClientSide.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="CompanyGrid">
<bean id="TransactionCallback"
className="com.company.MyClientTxCallback" />
<bean id="ObjectGridEventListener" className="" />
<backingMap name="Customer" numberOfBuckets="1429"
pluginCollectionRef="customerPlugins"/>
<backingMap name="Item" />
<backingMap name="OrderLine" numberOfBuckets="701"
timeToLive="800" ttlEvictorType="LAST_ACCESS_TIME" />
<backingMap name="Order" lockStrategy="PESSIMISTIC"
pluginCollectionRef="orderPlugins" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="customerPlugins">
<bean id="Evictor"
className="com.ibm.websphere.objectGrid.plugins.builtins.LRUEvictor" />
<bean id="MapEventListener" className="" />
</backingMapPluginCollection>
<backingMapPluginCollection id="orderPlugins">
<bean id="MapIndexPlugin"
className="com.company.MyMapIndexPlugin" />
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
A seguir há um resumo das substituições que são definidas:
- TransactionCallback no cliente é com.company.MyClientTxCallback
em vez da configuração do lado do servidor de
com.company.MyTxCallback.
- O cliente não tem um plug-in ObjectGridEventListener porque o
valor className é a cadeia vazia.
- O cliente configura numberOfBuckets como 1429 para Customer
backingMap, retém seu plug-in Evictor e remove o plug-in
MapEventListener.
- Os atributos numberOfBuckets e timeToLive de OrderLine backingMap
mudaram
- Embora um atributo lockStrategy diferente seja especificado, não
há nenhum efeito, pois o atributo lockStrategy não é suportado para
uma substituição de cliente.
- Crie o cliente usando o arquivo XML.
Para criar o cliente CompanyGrid usando o arquivo companyGridClientSide.xml, passe o arquivo ObjectGrid XML como uma URL para um dos métodos de conexão na interface ObjectGridManager:
ObjectGridManager ogManager =
ObjectGridManagerFactory.ObjectGridManager();
ClientClusterContext clientClusterContext =
ogManager.connect("MyServer1.company.com:2809", null, new URL(
"file:xml/companyGridClientSide.xml"));