Conflitos de Banco de Dados Causados por Upgrades de Bloqueio

Para evitar conflitos de banco de dados por upgrades de bloqueio, é possível alterar a política de intenção de acesso para beans de entidade a partir do padrão de wsPessimisticUpdate-WeakestLockAtLoad para wsPessimisticUpdate ou usar uma abordagem de bloqueio otimista.

Ao acessar dados simultaneamente, assegure-se de que o aplicativo esteja preparado para bloqueio do banco de dados, que deverá ocorrer para proteger a integridade dos dados.

Se um bean de entidade executar um método findByPrimaryKey, que por padrão obtém um bloqueio de Leitura no banco de dados, e o bean de entidade for atualizado na mesma transação, um upgrade de bloqueio será definido como Exclusivo.

Se esse cenário ocorrer simultaneamente em vários encadeamentos, um conflito poderá ocorrer. Isso se deve ao fato de que vários bloqueios de leitura podem ser obtidos ao mesmo tempo, mas um bloqueio restrito só poderá ser obtido quando os outros bloqueios forem liberados. Como todas as transações estão tentando o upgrade de bloqueio nesse cenário, um bloqueio restrito não poderá ser obtido.

Para evitar esse problema, você pode alterar a política de intenção de acesso para o bean de entidade do padrão do método wsPessimisticUpdate-WeakestLockAtLoad para o método wsPessimisticUpdate. Essa alteração permite ao aplicativo informar o produto e o banco de dados de que a transação atualizou o enterprise bean. O bloqueio de Atualização é obtido imediatamente no método findByPrimaryKey. Isso evita o upgrade de bloqueio quando a atualização é executada posteriormente.

A técnica preferida para definir políticas de intenção de acesso é alterar a intenção de acesso para todo o bean de entidade. É possível alterar a intenção de acesso para o método findByPrimaryKey, mas isso foi reprovado na Versão 6. Convém alterar a intenção de acesso para um método individual se, por exemplo, o bean de entidade estiver envolvido em algumas transações de leitura.

Uma técnica alternativa seria utilizar uma abordagem otimista, em que o método findByPrimaryKey não mantém um bloqueio de leitura, de modo que não há upgrade de bloqueio. Entretanto, isso exige que o aplicativo seja codificado para isso, a fim de tratar as recuperações. O bloqueio otimista destina-se a aplicativos que não esperam contenção do banco de dados regularmente.

Para alterar a política de intenção de acesso para um bean de entidade, você pode utilizar a ferramenta de montagem para definir o nível do bean, conforme descrito em Aplicando Políticas de Intenção de Acesso a Beans.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_ailu
Nome do arquivo: cejb_ailu.html