Utilización de transacciones gestionadas por componentes

Puede habilitar un bean de sesión, un servlet o un componente cliente de aplicaciones para utilizar transacciones gestionadas por componentes, con el fin de gestionar sus propias transacciones directamente en lugar de permitir que el contenedor gestione las transacciones.

Acerca de esta tarea

Nota: Los beans de entidad no pueden gestionar transacciones (de modo que no pueden utilizar transacciones gestionadas por bean).

Para habilitar un bean de sesión, un servlet o un componente cliente de aplicaciones para utilizar transacciones gestionadas por componentes, siga estos pasos:

Procedimiento

  1. Para beans de sesión, establezca el atributo Tipo de transacción del descriptor de despliegue del componente en Bean, como se describe en Configuración de los atributos de despliegue transaccionales.
  2. Para componentes de cliente de aplicaciones, habilite el soporte de demarcación de transacciones estableciendo el atributo Permitir demarcación de JTA del descriptor de despliegue del componente, como se describe en Configuración de los atributos de despliegue transaccionales.
  3. Escriba el código de componente para gestionar transacciones de forma activa.

    Para beans de sesión con estado, una transacción iniciada en un método determinado no tiene que realizarse (es decir, confirmarse ni retrotraerse) antes de llevar a cabo ese método. La transacción se puede llevar a cabo más tarde, por ejemplo en una llamada posterior al mismo método o incluso dentro de otro método. Sin embargo, se prefiere la construcción de la aplicación para que se inicie y se complete una transacción dentro de la misma llamada a método, ya que simplifica la depuración y el mantenimiento de la aplicación.

    En el siguiente extracto de código se muestra el código estándar necesario para obtener un objeto que encapsula el contexto de transacción con los pasos siguientes:
    • Cree un objeto javax.transaction.UserTransaction mediante la llamada a una búsqueda en java:comp/UserTransaction.
    • Utilice el objeto UserTransaction para marcar el límite de una transacción con métodos de transacciones como begin y commit, según sea necesario. Si un componente de aplicación comienza una transacción, también debe completar esa transacción llamando al método commit o al 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 el objeto userTran para llamar a métodos de transacciones
            userTran.begin();
            //Efectuar el trabajo transaccional
            ...
            userTran.commit();
            ...
        }
        ...
    }

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjta_usebmt
File name: tjta_usebmt.html