Utilizando Transações Gerenciadas por Componente

É possível ativar um bean de sessão, servlet ou componente de aplicativo cliente para usar transações gerenciadas por componente, para gerenciar suas próprias transações diretamente em vez de permitir que o contêiner gerencie as transações.

Sobre Esta Tarefa

Nota: Os beans de entidade não podem gerenciar transações (portanto, não podem usar as transações gerenciadas por bean).

Para permitir que um bean de sessão, servlet ou componente do cliente aplicativo utilize as transações gerenciadas por componente, execute as seguintes etapas:

Procedimento

  1. Para beans de sessão, configure o atributo Tipo de Transação no descritor de implementação do componente como Bean, conforme descrito em Configurando Atributos de Implementação Transacional.
  2. Para componentes do aplicativo cliente, ative o suporte para demarcação de transação, configurando o atributo Permitir Transação JTA no descritor de implementação do componente, conforme descrito em Configurando Atributos de Implementação Transacional.
  3. Grave o código do componente para gerenciar transações ativamente.

    Para beans de sessão stateful, uma transação iniciada em um determinado método não precisa ser concluída (ou seja, receber commit ou ser retrocedida) antes da conclusão desse método. A transação pode ser concluída posteriormente, por exemplo, em uma chamada subsequente ao mesmo método ou até mesmo em um método diferente. No entanto, construir o aplicativo para que uma transação seja iniciada e concluída na mesma chamada de método, em geral, é preferível, pois isso simplifica a depuração e a manutenção do aplicativo.

    A extração de código a seguir mostra o código padrão necessário para obter um objeto que encapsula o contexto de transação, e envolve as seguintes etapas:
    • Crie um objeto javax.transaction.UserTransaction chamando uma consulta em java:comp/UserTransaction.
    • Use o objeto UserTransaction para demarcar o limite de uma transação usando os métodos de transação, como begin e commit, conforme necessário. Se um componente de aplicativo iniciar uma transação, ele também deverá concluir essa transação chamando o método commit ou o método rollback.
    ...
    import javax.transaction.*;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    ...
        public float doSomething(long arg1)throws NamingException {
            InitialContext initCtx = new InitialContext();
            UserTransaction userTran = (UserTransaction)initCtx.lookup(
               "java:comp/UserTransaction");
            ...
            //Utilizar o objeto userTran para chamar métodos de transação
            userTran.begin();
            // Fazer trabalho transacional
            ...
            userTran.commit();
            ...
        }
        ...
    }

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



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