Tipo de Transação e Comportamento da Conexão
Todo o uso da conexão ocorre no escopo de uma transação global ou de um limite LTC (Local Transaction Containment). Cada tipo de transação coloca requisitos diferentes nas conexões e afeta as configurações de conexão de forma diferente.
Compartilhamento e Reutilização da Conexão:
Você pode compartilhar conexões somente em um escopo de transação global (assumindo que outras regras de compartilhamento sejam atendidas). Também é possível compartilhar conexões em um LTC compartilhável. Você pode reutilizar serialmente as conexões em um escopo de LTC. Um padrão de conexão obter/utilizar/fechar, seguido por outra instância de obter/utilizar/fechar (para a mesma origem de dados ou connection factory), permite reutilizar a mesma conexão. Consulte o tópico, Conexões que Podem ser Compartilhas e Conexões que não Podem ser Compartilhas para obter mais detalhes.
Comportamento de AutoCommit de JDBC
- Se você operar em um LTC e tiver o controle de resolução definido como Aplicativo, AutoCommit permanecerá TRUE, a não ser que seja alterado pelo aplicativo.
- Se você operar em um LTC e tiver o controle de resolução definido como ContainerAtBoundary, o aplicativo não deverá afetar a configuração AutoCommit. O tempo de execução do WebSphere Application Server configura o valor AutoCommit como FALSE antes de o trabalho começar e depois confirma ou retrocede o trabalho, conforme apropriado, no final do escopo do LTC.
- Se você utilizar uma conexão com uma transação global, o banco de dados ignorará a definição AutoCommit, para que o serviço de transações, que controla o processo de consolidação e rollback possa gerenciar a transação. Essa ação ocorre na primeira utilização da conexão para realizar tarefas, independente do usuário alterar a definição AutoCommit. Após a conclusão da transação, o valor de AutoCommit retorna ao valor que tinha antes do primeiro uso da conexão. Portanto, mesmo que o valor AutoCommit esteja definido como TRUE antes de a conexão ser usada em uma transação global, não é necessário definir o valor como FALSE, porque esse valor é ignorado pelo banco de dados. Neste exemplo, após a conclusão da transação, o valor de AutoCommit da conexão retorna para TRUE.
- Se você utilizar várias conexões distintas em uma transação global, é garantido que será efetuado commit ou rollback de todo o trabalho junto. Esse não é o caso para uma contenção de transação local (escopo de LTC). Dentro de uma LTC, o commit ou rollback do trabalho feito em uma conexão é feito independentemente do trabalho feito em qualquer outra conexão na LTC.
Conexões One-phase Commit e Two-phase Commit
- Um gerenciador de recursos two-phase commit pode suportar coordenação de duas fases de uma transação. Esse suporte é necessário para transações que envolvem outros gerenciadores de recursos; essas transações são globais. Consulte o tópico Suporte a Transações no WebSphere Application Server para obter mais explicações.
- Um gerenciador de recursos one-phase commit suporta apenas transações de uma fase ou transações LTC, nas quais esse recurso é o único datastore participante. Consulte o tópico Suporte a Transações no WebSphere Application Server para obter mais explicações.
Os recursos de consolidação de uma fase são aqueles cujos trabalhos feitos em uma conexão de uma fase não podem se misturar com outras conexões e asseguram que o trabalho feito em todas as conexões seja concluído ou falhe atomicamente. O produto não permite mais de uma conexão de commit de uma fase em uma transação global. Além disso, ele não permite uma conexão de consolidação de uma fase em uma transação global com uma ou mais conexões de consolidação de duas fases. É possível coordenar apenas várias conexões de consolidação de duas fases dentro de uma transação global.
O WebSphere Application Server fornece suporte ao último participante , que permite que um único recurso one-phase commit participe de uma transação global com um ou mais recursos two-phase commit.
WTRN0063E:
Ocorreu uma tentativa ilegal de listar um recurso com capacidade de uma fase com um
recurso existente com capacidade de duas fases
.