Utilizando a Interface TaskNameManager

Utilizando a interface TaskNameManager, você pode programaticamente configurar o nome da tarefa atual. Ela permite substituir a tarefa atual associada ao encadeamento de execução e reconfigurar a tarefa atual com a tarefa original.

Sobre Esta Tarefa

Exceto para aplicativos J2EE 1.3 que estão em execução em um servidor em que o atributo Modo de Compatibilidade 5.x é selecionado, essa interface não pode ser utilizada em Enterprise JavaBeans que são configurados para transações gerenciadas pelo contêiner ou em ActivitySessions gerenciadas pelo contêiner porque as unidades de trabalho podem apenas ser associadas a uma tarefa no momento exato que a unidade de trabalho é iniciada. Portanto, a chamada para definir o nome da tarefa deve ser chamada antes do início da unidade de trabalho. As unidades de trabalho não podem ser denominadas depois de serem iniciadas. As chamadas nesta interface durante a execução de uma unidade de trabalho gerenciada por contêiner simplesmente são ignoradas.

A criação de perfis de aplicativos não suporta consultas da tarefa que está em operação no tempo de execução. Em vez disso, os aplicativos interagem com os nomes de tarefas lógicos que são configurados de forma declarada como tarefas gerenciadas pelo aplicativo. As referências lógicas permitem que o nome real da tarefa seja alterado sem ser necessário recompilar aplicativos.

Sempre que possível, evite definir tarefas por meio de programação. O método declarativo resulta em uma função mais portátil que pode ser facilmente ajustada sem requerer novo desenvolvimento e nova compilação.

Nota: Se você selecionar o atributo de Modo de Compatibilidade 5.x na página do console Serviço de Perfil do Aplicativo, as tarefas configuradas nos aplicativos J2EE 1.3 não serão necessariamente associadas a unidades de trabalho e podem, arbitrariamente, ser aplicadas e substituídas. Este não é um modo de operação recomendado e pode conduzir a conflitos inesperados durante o acesso ao banco de dados. As tarefas não são comunicadas em pedidos entre aplicativos que estão em execução no Compatibility Mode 5.x do Perfil do Aplicativo e de aplicativos que não estão em execução no modo de compatibilidade.

Para que um cliente da Versão 6.0 interaja com aplicativos em execução no Modo de Compatibilidade da 5.x do Perfil do Aplicativo, é necessário definir a propriedade de sistema appprofileCompatibility como true no processo de cliente. Isto pode ser feito especificando a opção -CCDappprofileCompatibility=true ao chamar o comando launchClient.

Procedimento

  1. Configure as tarefas gerenciadas pelo aplicativo. A definição de perfil do aplicativo requer que uma referência de nome de tarefa seja declarada para todas as tarefas que devem ser definidas por meio de programação. As referências aos nomes de tarefas introduzem um nível de falta de direção de forma que a tarefa em si definida no tempo de execução pode ser ajustada por meio de remontagem sem requerer recodificação ou recompilação. Qualquer tentativa para definir um nome de tarefa que não tenha sido declarado como uma referência de tarefa resulta na ocorrência de uma exceção. Se uma unidade de trabalho já tiver sido iniciada quando um nome de tarefa for definido, essa unidade de trabalho existente não será associada ao nome da tarefa. Apenas as unidades de trabalho iniciadas após a definição do nome da tarefa serão associadas à tarefa.
    Configure tarefas gerenciadas por aplicativo conforme descrito nos tópicos a seguir. Para concluir essas tarefas, consulte o centro de informações da ferramenta de montagem:
    • Configure tarefas gerenciadas pelo aplicativo para componentes da Web.
    • Configure tarefas gerenciadas pelo aplicativo para aplicativos clientes.
    • Configure tarefas gerenciadas pelo aplicativo para Enterprise JavaBeans.
  2. Execute uma consulta Java Naming and Directory Interface (JNDI) and Directory Interface) na interface TaskNameManager:
    InitialContext ic = new InitialContext();
    TaskNameManager tnManager = ic.lookup
    ("java:comp/websphere/AppProfile/TaskNameManager");
    A interface TaskNameManager não esta ligada ao espaço de nomes se o serviço de definição de perfil do aplicativo estiver desativado.
  3. Defina o nome da tarefa:
    try {
    tnManager.setTaskName("updateAccount");
    }
    catch (IllegalTaskNameException e) {
    // referência do nome da tarefa não configurada. Tratar erro.
    }
    // . . .
    //
    O nome transmitido ao método setTaskName() ("updateAccount" nesse exemplo) é, na verdade, uma referência ao nome da tarefa que você configurou na etapa um.
  4. Iniciar uma UserTransaction
    Nota: Se estiver utilizando um aplicativo J2EE 1.3 com o modo de Compatibilidade 5.x configurado, o nome da tarefa configurado na etapa 3 será o nome da tarefa ativo e você poderá desconsiderar essa etapa.
    Se estiver utilizando um aplicativo J2EE e o modo de compatibilidade não for configurado ou se estiver utilizando um aplicativo J2EE 1.4, você deverá iniciar uma transação para que o nome da tarefa seja ativado. Um nome da tarefa pode ser associado apenas a uma transação. Além disso, ele é associado a uma transação quando essa transação é iniciada e esse nome da tarefa é associado à transação por toda a duração da transação. Portanto, o nome da tarefa configurado na etapa anterior não está ativo nesse ponto. Você deve iniciar uma UserTransaction como o fragmento de código a seguir ilustra:
    try{
        InitialContext initCtx = new InitialContext();
        userTran = (UserTransaction) initCtx.lookup("java:comp/UserTransaction");
        userTran.begin();
    }
    catch (Exception e) {
    }         
    // . . .
    //
    Observe o método resetTaskName() na interface TaskNameManager. A reconfiguração do nome da tarefa não tem nenhum efeito, a menos que chamada por um aplicativo J2EE 1.3 em execução em um servidor para o qual o atributo Modo de Compatibilidade 5.x está selecionado na página do console do Serviço de Perfil do Aplicativo. Este não é um modo de operação recomendado e pode conduzir a conflitos inesperados durante o acesso ao banco de dados. Uma chamada para resetTask( ) deve ser utilizada apenas por aplicativos J2EE 1.3 quando o modo de Compatibilidade 5.x estiver definido para desfazer os efeitos de quaisquer operações do método setTaskName() e restabelecer o nome da tarefa que era atual quando o componente iniciou a execução. Se o método setTaskName() não tiver sido chamado, o método resetTaskName() não terá efeito.

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