Local transaction containment

Uma LTC (Local Transaction Containment) é utilizada para definir o comportamento do servidor de aplicativos em um contexto de transação não especificado.

Contexto de transação não especificado é definido na especificação Enterprise JavaBeans, Versão 2.0 e posterior. Por exemplo, consulte a especificação dessa tecnologia.

Uma LTC é um escopo de unidade de trabalho limitada, dentro da qual zero ou mais resource manager local transactions (RMLT) podem ser acessadas. A LTC define o limite no qual todas as RMLTs devem ser concluídas; quaisquer RMLTs incompletas são resolvidas, de acordo com o critério, pelo contêiner. Por padrão, uma LTC é local para uma instância de bean; ela não é compartilhada entre os beans, mesmo que sejam gerenciados pelo mesmo contêiner. As LTCs são iniciadas pelo contêiner antes do dispatch de um método em um componente de aplicativo corporativo, como um enterprise bean ou um servlet, sempre que o dispatch ocorrer na ausência de um contexto de transação global. As LTCs são concluídas pelo contêiner dependendo do limite da LTC configurado pelo aplicativo; por exemplo, no final do dispatch de método. Não há interface programática para o suporte LTC; as LTCs são gerenciadas exclusivamente pelo contêiner. O implementador de aplicativo configura LTCs em componentes de aplicativo individuais, aplicativos da Web ou EJB usando atributos de transação no descritor de implementação do aplicativo.

Uma restrição de transação local (LTC) pode ser configurada como parte de um descritor de implementação do componente de aplicativo para ser compartilhável em diversos componentes de aplicativo, incluindo componentes de aplicativo da Web e enterprise beans que usam transações gerenciadas por contêiner, de modo que esses componentes possam compartilhar conexões sem usar uma transação global. Compartilhar um único gerenciador de recursos entre componentes de aplicativos melhora o desempenho, aumenta a escalabilidade e reduz a contenção de bloqueio de recursos.

LTCs podem ser compartilhadas em diversos componentes, incluindo componentes de aplicativo da Web e enterprise beans que usam transações gerenciadas por contêiner. Esse compartilhamento é útil em situações como o uso frequente de chamadas de componente da Web include(), em que um encadeamento pode ter diversas conexões bloqueadas por LTCs em diferentes módulos da Web. Nessa situação, o aplicativo pode encontrar conflitos de código no carregamento, quando os encadeamentos começam a aguardar por si mesmos para liberar as conexões. Para superar esse problema sem utilizar uma transação global, especifique que os componentes de aplicativo podem compartilhar LTCs configurando-se o atributo Shareable no descritor de implementação de cada componente. Você deve usar um descritor de implementação; não é possível especificar esse atributo se foi utilizada anotação.

Ao configurar o atributo Shareable, o arquivo XML do descritor de implementação estendida inclui a seguinte linha de código:

<local-transaction boundary="BEAN_METHOD" resolver="CONTAINER_AT_BOUNDARY" 
unresolved-action="COMMIT" shareable="true"/> 

Para obter os benefícios completos de uma LTC compartilhada, certifique-se também de que a referência de recurso para cada componente esteja definida como padrão para as conexões que podem ser compartilhadas.

No diagrama a seguir, os componentes 1, 2 e 3 são implementados com o atributo Shareable e o componente 4, não. Se os componentes 2 e 3 obtiverem conexões com a origem de dados B e suas referências de recursos para a origem de dados B forem padronizadas para conexões que podem ser compartilhadas, eles compartilharão a conexão, mas o componente 4 não.
Esta figura é descrita no texto ao redor.

Os aplicativos que usam LTCs compartilháveis não podem confirmar ou retroceder explicitamente conexões do gerenciador de recursos usadas em uma LTC compartilhável. Apesar disso, elas podem usar conexões que tenham um recurso autoCommit. Isso garante a encapsulação correta do uso da conexão pelos componentes e protege um componente para que não tenha que fazer suposições sobre o comportamento de outros componentes que compartilham a conexão.

Se um aplicativo iniciar qualquer trabalho não autocommit em uma LTC para a qual o atributo Resolver esteja configurado como Application e o atributo Shareable como true, ocorrerá uma exceção no tempo de execução. Por exemplo, em uma conexão JDBC, trabalho não autocommit é o trabalho que o aplicativo executa depois de usar o método setAutoCommit(false) para desativar a opção autocommit na conexão. Os enterprise beans que utilizam BMT (Bean Managed Transactions) não podem ser montados com o atributo Shareable definido na configuração LTC.

[AIX Solaris HP-UX Linux Windows][IBM i] Uma contenção de transação local não pode existir simultaneamente a uma transação global. Se o dispatch do componente de aplicativo ocorrer na ausência de uma transação global, o contêiner sempre estabelecerá um LTC para os componentes de aplicativo corporativo no J2EE 1.3 ou posterior. As únicas exceções a isso são os seguintes itens:
  • O dispatch do componente de aplicativo ocorre sem interposição do contêiner, por exemplo, para um um bean de sessão stateless create ou um encadeamento iniciado pelo servlet.
  • Componentes da Web J2EE 1.2.
  • Enterprise beans J2EE 1.2 BMT (Transação Gerenciada por Bean).

[z/OS]Uma contenção de transação local não pode existir simultaneamente a uma transação global. Se o despacho do componente do aplicativo ocorrer na ausência de uma transação global, o contêiner sempre estabelecerá uma LTC. A única exceção a esse comportamento são quando um despacho do componente do aplicativo ocorrer sem interposição do contêiner; por exemplo, para um create de um bean de sessão stateless.

Uma contenção de transação local pode ter o escopo definido em um contexto de ActivitySession mais antigo que o método de enterprise bean em que foi iniciada, conforme descrito no tópico sobre ActivitySessions e contextos de transação.


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