Configurando um TaskName Usando a API TaskNameAccessor
Usando a API TaskNameAccessor para configurar o TaskName da Java™ Persistence API (JPA) no tempo de execução.
Sobre Esta Tarefa
No contêiner de Enterprise JavaBeans (EJB), um nome de tarefa é automaticamente configurado por padrão quando uma transação inicia. Esta ação é executada quando um componente ou método de megócios é chamado em um bean de sessão CMT ou quando um aplicativo chama o sessionContext.getTransaction().begin() em um bean de sessão BMT. Este TaskName consiste em uma concatenação do tipo de bean de sessão totalmente qualificado do pacote, um caractere de ponto e o nome do método. Por exemplo: com.acme.MyCmtSessionBean.methodABC.
Se estiver usando JPA no contexto do contêiner da Web, um aplicativo deve usar a API TaskNameAccessor para configurar o TaskName no encadeamento de execução atual.

package com.ibm.websphere.persistence;
public abstract class TaskNameAccessor {
/**
* Retorna o nome da tarefa atual anexada ao contexto do encadeamento atual.
* @retornar nome da tarefa atual ou nulo se nenhum for localizado.
*/
public static String getTaskName ();
/**
* Inclui um nome de tarefa de intenção de acesso à JPA definida pelo usuário para o contexto de encadeamento
* atual.
*
* @param taskName
* @retorna false se uma tarefa existente tiver sido anexada no encadeamento
* atual ou se o TSR (Transaction Synchronization Registry) não estiver
* disponível (isto é, em ambiente JSE).
*/
public static boolean setTaskName(String taskName);
}
package my.company;
@Remote
class Ejb1 {
// nenhum tx do responsável pela chamada
@TransactionAttribute(Requires)
public void caller_Method1() {
// uma nova transação implícita inicia
// TaskName "my.company.Ejb1.caller_Method1" configurado em TSR
ejb1.callee_Method?();
}
@TransactionAttribute(RequiredNew)
public void callee_Method2() {
// uma nova transação implícita inicia, por exemplo, TxRequiredNew.
// TaskName "my.company.Ejb1.callee_Method2" configurado em TSR
}
@TransactionAttribute(Requires)
public void callee_Method3() {
// Na transação do responsável pela chamada, portanto, TaskName permanece
// "my.company.Ejb1.caller_Method1"
}
@TransactionAttribute(NotSupported)
public void callee_LocalTx () {
// Transação não-especificada, uma nova transação local implicitamente iniciada.
// TaskName "my.company.Ejb1.callee_LocalTx" configurado em TSR
}
}