Poderão ocorrer colisões de mudanças se os mesmos registros puderem ser alterados simultaneamente
em dois locais. Em uma topologia de replicação multimestre, os domínios do serviço de catálogo detectam colisões automaticamente.
Quando um domínio de serviço de catálogo detecta uma colisão, ele chama um árbitro.
Geralmente, as colisões são resolvidas com o árbitro de colisão padrão.
No entanto, um aplicativo pode fornecer um árbitro de colisão customizado.
Sobre Esta Tarefa
Se um domínio de serviço de catálogos receber uma entrada replicada que colide com um registro de colisão, o árbitro padrão usará as mudanças do domínio de serviço de catálogo nomeado mais baixo de maneira lexical. Por exemplo, se
os domínios A e B gerarem um conflito para um registro, a mudança do
domínio B será ignorada. O domínio A mantém sua versão e o registro no domínio B é alterado para que corresponda ao registro do domínio A. Os nomes de domínio são convertidos em maiúsculas para comparação.
Uma alternativa é a topologia de replicação multimestre chamar um plug-in de colisão customizado para decidir o resultado. Essas instruções esboçam como desenvolver um árbitro de colisão customizado e configurar uma topologia de replicação multimestre para usá-lo.
Procedimento
- Desenvolva um árbitro de colisão customizado e integre-o em seu aplicativo.
A classe deve implementar a interface:
com.ibm.websphere.objectgrid.revision.CollisionArbiter
Um plug-in de colisão tem três opções para decidir o resultado de uma colisão. Ele pode escolher a cópia local ou a cópia remota ou pode fornecer uma versão revisada da entrada. Um domínio de serviço de catálogo fornece as seguintes informações para um árbitro de colisão customizado:
- A versão existente do registro
- A versão da colisão do registro
- Um Objeto de sessão que deve ser usado para criar a versão revisada da entrada colidida
O método de plug-in retorna um objeto que indica sua decisão.
O método chamado pelo domínio para chamar o plug-in deve retornar verdadeiro ou falso, em que falso significa ignorar a colisão. Quando a colisão é ignorada, a versão local permanece inalterada e o árbitro esquece que já ter visto a versão existente. O método retornará um valor real se tiver usado a sessão fornecida para criar uma versão nova, mesclada do registro, reconciliando a mudança.
- No arquivo objectgrid.xml, especifique o plug-in do árbitro customizado.
O ID deve ser
CollisionArbiter.
<dgc:objectGrid name="revisionGrid" txTimeout="10">
<dgc:bean className="com.you.your_application.
CustomArbiter" id="CollisionArbiter">
<dgc:property name="property" type="java.lang.String"
value="propertyValue"/>
</dgc:bean>
</dgc:objectGrid>