Requisitos para Configurar os Níveis de Isolamento de Acesso a Dados

Este artigo discute os critérios e efeitos da configuração de níveis de isolamento para componentes de acesso a dados que formam os módulos Enterprise JavaBeans (EJB) 2.x e mais recente.

Em um módulo EJB 1.1, é possível configurar o nível de isolamento no nível do método ou no nível do bean. Esse recurso também se aplica aos beans CMP (Container-managed Persistence) 1.1 que você monta nos módulos EJB 2.x. O WebSphere Application Server permite que o descritor de implementação de um bean CMP declare o nível de versão de 1.1, independentemente da versão geral do módulo.

No entanto, a capacidade de definir o nível de isolamento no nível do método ou do bean não se aplica a outros enterprise beans dentro de um módulo EJB 2.x, incluindo beans CMP 2.x. O WebSphere Application Server Versão 5.0 removeu esse recurso dos módulos EJB 2.0 para oferecer uma arquitetura que enfim forneça uso de conexão mais eficiente.

Consequentemente, as versões mais recentes do produto forçam as seguintes restrições na declaração do nível de isolamento para beans CMP 2.x, bem como para beans de sessão, beans acionados por mensagens e beans BMP (Bean Managed Persistence) montados nos módulos EJB 2.x:
  • Não é possível especificar o nível de isolamento no nível do método EJB ou no nível do bean.
  • Se você configurar um aplicativo JDBC, um bean BMP (Bean-Managed Persistence) ou um servlet para participar de transações globais, qualquer conexão que for compartilhada não poderá aceitar um nível de isolamento especificado pelo usuário. Um WebSphere Application Server só pode definir um nível de isolamento especificado pelo usuário em uma conexão que não seja compartilhada em uma transação global. Geralmente, você deseja abster-se de especificar níveis de isolamento em conexões que podem ser compartilhadas.
A configuração para o nível de isolamento é determinada pelo tipo de bean utilizado pelo componente:
Nível de isolamento em conexões utilizadas pelos beans CMP 2.x
Em um módulo EJB 2.x, quando um bean CMP 2.x utiliza uma nova origem de dados para acessar um banco de dados backend, o nível de isolamento é determinado pelo tempo de execução do WebSphere Application Server, com base no tipo de intenção de acesso designado ao bean ou ao método de chamada. Outros usuários da conexão não-CMP podem acessar essa mesma origem de dados e também utilizar a intenção de acesso e o suporte ao perfil do aplicativo para gerenciar seu controle de coincidência.
Conexões utilizadas por outros enterprise beans 2.x e outros componentes não-CMP
Para todas as outras instâncias de conexão do JDBC (conexões diferentes daquelas utilizadas pelos beans CMP), é possível especificar um nível de isolamento na referência de recursos da origem de dados. Para as conexões que podem ser compartilhadas, executadas em transações globais, esse método é a única maneira de definir o isolationLevel para conexões. Não é permitido tentar definir diretamente o nível de isolamento através do método setTransactionIsolation() em uma conexão compartilhável que é executada em uma transação global. Para utilizar um nível de isolamento diferente em conexões, é preciso fornecer uma referência de recurso diferente. Defina esses padrões através da sua ferramenta de montagem.

Cada referência de recurso se associa a um nível de isolamento. Quando seu aplicativo utiliza esse nome de JNDI (Java™ Naming and Directory Interface) de referência de recurso para consultar uma origem de dados, cada conexão retornada dessa origem de dados utilizando essa referência de recurso tem o mesmo nível de isolamento.

Os componentes que necessitem utilizar conexões compartilháveis com vários níveis de isolamento podem criar várias referências de recurso, dando a elas nomes de JNDI diferentes, e fazer o código pesquisar a origem de dados apropriada para o nível de isolamento que precisam. Dessa forma, é possível utilizar conexões separadas com os diferentes níveis de isolamento ativados nelas.

É possível mapear essas várias referências de recurso para a mesma origem de dados configurada. No entanto, as conexões ainda vêm do mesmo pool básico; o gerenciador de conexão não permite o compartilhamento de conexões solicitadas pelas referências de recursos com níveis diferentes de isolamento. Considere o seguinte cenário:
  • Uma origem de dados está ligada a duas referências de recursos: jdbc/RRResRef e jdbc/RCResRef.
  • RRResRef tem o nível de isolamento RepeatableRead definido. RCResRef tem o nível de isolamento ReadCommitted definido.
Se o aplicativo quiser atualizar as tabelas ou se um bean BMPbean atualizar alguns atributos, ele poderá utilizar o nome de JNDI jdbc/RRResRef para pesquisar a instância da origem de dados. Todas as conexões retornadas da instância da origem de dados têm um nível de isolamento RepeatableRead. Se o aplicativo quiser executar uma consulta somente leitura, é melhor utilizar o nome de JNDI jdbc/RCResRef para pesquisar a origem de dados.

O produto não pedirá que você configure o nível de isolamento em uma referência de recurso da origem de dados para um módulo aplicativo não CMP. Se você não especificar o nível de isolamento na referência de recurso, ou se especificar TRANSACTION_NONE, o tempo de execução do WebSphere Application Server utilizará um nível de isolamento padrão para a origem de dados. O Application Server utiliza uma configuração padrão com base no driver JDBC.

Para a maioria dos drivers, o WebSphere Application Server utiliza um padrão de nível de isolamento de TRANSACTION_REPEATABLE_READ. No entanto, para drivers Oracle, o Application Server utiliza um nível de isolamento do TRANSACTION_READ_COMMITTED. Utilize a seguinte tabela para referência rápida:

Banco de Dados: Nível de isolamento padrão:
DB2 RR
Oracle RC
Sybase RR
Informix RR
Apache Derby RR
SQL Server RR
Nota: Esses mesmos níveis de isolamento padrão são utilizados em casos de consultas diretas de JNDI de uma origem de dados.
  • RR = Leitura repetível de JDBC (TRANSACTION_REPEATABLE_READ)
  • RC = Leitura consolidada de JDBC (TRANSACTION_READ_COMMITTED)

Para customizar o nível de isolamento padrão, você pode usar a propriedade customizada webSphereDefaultIsolationLevel para a origem de dados. Na maioria dos casos, defina o nível de isolamento no descritor de implementação quando compactar o arquivo EAR, mas em algumas situações talvez seja necessário customizar o nível de isolamento padrão. Esta propriedade não terá efeito se nenhuma das opções anteriores for usada, e esta propriedade customizada é fornecida para estas situações em que não há outro meio de configurar o nível de isolamento.

Utilize os seguintes valores para a propriedade customizada webSphereDefaultIsolationLevel:
Valores possíveis Nível de isolamento JDBC Nível de isolamento do DB2
8 TRANSACTION_SERIALIZABLE Leitura Repetitiva (RR)
4 (padrão) TRANSACTION_REPEATABLE_READ Estabilidade de Leitura (RS)
2 TRANSACTION_READ_COMMITTED Estabilidade de Cursor (CS)
1 TRANSACTION_READ_UNCOMMITTED Leitura Não Confirmada (UR)
[IBM i]0 TRANSACTION_NONE Sem consolidação (NC)
Para definir essa propriedade customizada para uma origem de dados:
  1. Clique em Recursos > Provedor JDBC > Provedor_JDBC.
  2. Clique em Origens de Dados na seção Propriedades Adicionais.
  3. Clique no nome da origem de dados.
  4. Clique em Propriedades Customizadas.
  5. Crie a propriedade customizada webSphereDefaultIsolationLevel.
    1. Clique em Novo(a).
    2. Digite webSphereDefaultIsolationLevel para o campo de nome.
    3. Digite um dos valores possíveis no campo de valor.
O Servidor de Aplicativos define o nível de isolamento priorizando as configurações disponíveis. O Servidor de Aplicativos definirá o nível de isolamento com base nos valores do seguinte, nesta ordem:
  1. Nível de isolamento de referência de recurso
  2. Nível de isolamento especificado pela política de intenção de acesso
  3. Propriedade customizada que configura um nível de isolamento
  4. Configuração padrão do Servidor de Aplicativos.

Í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=cdat_isolevel
Nome do arquivo: cdat_isolevel.html