Uso de la interfaz TaskNameManager

Mediante la utilización de la interfaz TaskNameManager, puede establecer mediante programación el nombre de tarea actual. Permite alterar temporalmente la tarea actual asociada con la hebra de ejecución y restablecer la tarea actual con la tarea original.

Acerca de esta tarea

Excepto para aplicaciones J2EE 1.3 que se ejecutan en un servidor donde se ha seleccionado el atributo Modalidad de compatibilidad 5.x, esta interfaz no se puede utilizar en Enterprise JavaBeans que se configuran para transacciones gestionadas por contenedor o sesiones de actividad gestionadas por contenedor porque las unidades de trabajo sólo se pueden asociar con una tarea en el momento exacto en que se inicia la unidad de trabajo. La llamada para establecer el nombre de la tarea debe por lo tanto invocarse antes de que se inicie la unidad de trabajo. Las unidades de trabajo no pueden nombrarse después de haberse iniciado. Las llamadas en esta interfaz durante la ejecución de una unidad de trabajo gestionada por contenedor se ignoran.

El perfilado de aplicaciones no tienen soporte para consultas de la tarea que está operativa en tiempo de ejecución. En su lugar, las aplicaciones interactúan con nombres de tareas lógicas que se configuran mediante declaración como tareas gestionadas por aplicación. Las referencias lógicas permiten el cambio del nombre de la tarea actual sin tener que volver a compilar las aplicaciones.

Siempre que sea posible, hay que evitar el establecimiento de tareas mediante programación. El método de declaración hace que la función sea más portátil, y que se puede ajustar fácilmente sin tener que volver a programar y compilar.

Nota: Si selecciona el atributo Modalidad de compatibilidad 5.x en la página de la consola del servicio de perfilado de aplicaciones, las tareas configuradas en las aplicaciones J2EE 1.3 no se asocian necesariamente con unidades de trabajo, y se pueden aplicar y alterar temporalmente de forma arbitraria. Esta modalidad no se recomienda ya que puede producir puntos muertos inesperados durante el acceso a la base de datos. Las tareas no se comunican en las solicitudes entre aplicaciones que se ejecutan con la modalidad de compatibilidad 5.x de perfilado de aplicaciones y las aplicaciones que no se ejecutan con esa modalidad de compatibilidad.

Para que un cliente versión 6.0 interactúe con aplicaciones que se ejecutan con la modalidad de compatibilidad 5.x de perfilado de aplicaciones, debe establecer la propiedad del sistema appprofileCompatibility como true en el proceso del cliente. Para ello, especifique la opción -CCDappprofileCompatibility=true cuando invoque el mandato launchClient.

Procedimiento

  1. Configure las tareas gestionadas por aplicación. El perfilado de aplicaciones necesita de la declaración de una referencia de nombre de tarea para toda tarea que se vaya a establecer mediante programación. Las referencias de nombres de tarea presentan una alternativa indirecta, de forma tal que la tarea actual establecida en tiempo de ejecución se puede ajustar mediante el reensamblaje sin tener que volver a codificar o compilar. Cualquier intento de establecer un nombre de tarea que no esté declarado como una referencia de tarea provoca que se lance una excepción. Si una unidad de trabajo ya se ha iniciado al establecer el nombre de una tarea, la unidad de trabajo existente no se asocia con el nombre de la tarea. Sólo se asocian con la tarea las unidades de trabajo que se inician después de haber establecido el nombre de la tarea.
    Configure las tareas gestionadas por aplicación cómo se describen en los temas siguientes. Para completar estas tareas, consulte el Information Center de la herramienta de ensamblaje:
    • Configure las tareas gestionadas por la aplicación para componentes web.
    • Configure las tareas gestionadas por la aplicación para clientes de aplicación.
    • Configure las tareas gestionadas por la aplicación para Enterprise JavaBeans.
  2. Realice una búsqueda JNDI (Java Naming and Directory Interface) en la interfaz TaskNameManager:
    InitialContext ic = new InitialContext(); 
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    La interfaz TaskNameManager no está enlazada al espacio de nombres si el servicio de perfilado de aplicaciones está inhabilitado.
  3. Establezca el nombre de tarea:
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // Referencia de nombre de tarea no configurada. Gestione el error.
    }
    // . . .
    //
    El nombre pasado al método setTaskName() ("updateAccount" en este ejemplo) es realmente una referencia de nombre de tarea que ha configurado en el paso uno.
  4. Empiece una transacción de usuario
    Nota: Si está utilizando una aplicación J2EE 1.3 con la modalidad de compatibilidad 5.x establecida, el nombre de tarea establecido en el paso 3 es ahora el nombre de tarea activo y puede ignorar este paso.
    Si está utilizando una aplicación J2EE y la modalidad de compatibilidad no está establecida o si está utilizando una aplicación J2EE 1.4, debe empezar una transacción para que el nombre de tarea se active. Un nombre de tarea sólo se puede asociar con una transacción. Además, se asocia con una transacción cuando esa transacción ha empezado y dicho nombre de tarea se asocia con la transacción durante el tiempo que dura la transacción. Por lo tanto, el nombre de tarea establecido en el paso anterior no está activo en este punto. Debe empezar una transacción de usuario tal como ilustra el siguiente fragmento de código:
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin();
    }
    catch(Exception e){
    }         
    // . . .
    //
    Fíjese en el método resetTaskName() en la interfaz TaskNameManager. El restablecimiento del nombre de tarea no tiene ningún efecto a no ser que la llame una aplicación J2EE 1.3 que se ejecute en un servidor para el que se ha seleccionado el atributo de modalidad de compatibilidad 5.x en la página de consola del servicio de perfilado de aplicaciones. Esta modalidad no se recomienda ya que puede producir puntos muertos inesperados durante el acceso a la base de datos. Las aplicaciones J2EE 1.3 sólo deben utilizar una llamada a resetTask( ) cuando la modalidad de compatibilidad 5.x esté establecida para deshacer los efectos de cualquier operación del método setTaskName() y volver a establecer el nombre de tarea que estaba vigente cuando el componente inició la ejecución. Si no se ha llamado al método setTaskName(), el método resetTaskName() no tiene ningún efecto.

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=tapp_usetasknamemanager
File name: tapp_usetasknamemanager.html