Establecimiento de un TaskName mediante la API TaskNameAccessor
Utilización de la API TaskNameAccessor para establecer un TaskName de API Java™ Persistence (JPA) en tiempo de ejecución.
Acerca de esta tarea
En el contenedor de EJB (Enterprise JavaBeans), un nombre de tarea se establece de forma automática y de forma predeterminada después de que se inicie una transacción. Esta acción se realiza cuando un componente o un método empresarial se invoca en un bean de sesión de CMT o cuando una aplicación invoca sessionContext.getTransaction().begin() en un bean de sesión de BMT. Este TaskName consta de una concatenación del tipo de bean de sesión de paquete plenamente cualificado, un punto y el nombre del método. Por ejemplo: com.acme.MyCmtSessionBean.methodABC.
Si va a utilizar JPA en el contexto del contenedor web, una aplicación debe utilizar la API de TaskNameAccessor para establecer el TaskName en la hebra actual de ejecución.

package com.ibm.websphere.persistence;
public abstract class TaskNameAccessor {
/**
* Devuelve el nombre de tarea actual adjuntado en el contexto de hebra actual.
* @devolver nombre de tarea actual o valor nulo si no se encuentra ninguno.
*/
public static String getTaskName ();
/**
* Añade un nombre de tarea de intento de acceso a JPA definido por el usuario
* al contexto de hebra actual.
*
* @param taskName
* @devolver false si una tarea existente ya se ha adjuntado en la hebra
* actual o el registro de sincronización de transacciones (TSR) no
* está disponible (por ejemplo, en el entorno JSE).
*/
public static boolean setTaskName(String taskName);
}
package my.company;
@Remote
class Ejb1 {
// no se asume ninguna transacción del llamante
@TransactionAttribute(Requires)
public void caller_Method1() {
// empieza una nuevo transacción implícita
// TaskName "my.company.Ejb1.caller_Method1" set on TSR
ejb1.callee_Method?();
}
@TransactionAttribute(RequiredNew)
public void callee_Method2() {
// empieza una nueva transacción implícita, es decir, TxRequiredNew.
// TaskName "my.company.Ejb1.callee_Method2" establecido en TSR
}
@TransactionAttribute(Requires)
public void callee_Method3() {
// En la transacción llamante, TaskName continúa siendo
// "my.company.Ejb1.caller_Method1"
}
@TransactionAttribute(NotSupported)
public void callee_LocalTx () {
// Transacción no especificada; se ha iniciado implícitamente una nueva transacción local.
// TaskName "my.company.Ejb1.callee_LocalTx" establecido en TSR.
}
}