Considerações sobre Tarefas e Unidades de Trabalho

A função de perfil do aplicativo funciona sob o conceito UOW (Unit Of Work). UOW, nesse caso, significa uma transação ou uma ActivitySession.

O nome da tarefa em um método é utilizado apenas quando uma UOW é iniciada, por causa desse método ser chamado. Isso fornece um padrão de acesso a dados mais previsível com base na Unit of Work ativa. Para ser mais específico, essa abordagem assegura que um tipo de bean com apenas uma intenção de acesso configurada seja carregado em uma UOW, pois um bean é configurado com apenas uma intenção de acesso em um perfil do aplicativo. Essa intenção de acesso configurada para um tipo de bean é determinada na hora da montagem e é utilizada pelo serviço de Perfil do Aplicativo.

O nome de uma tarefa sempre é associado a uma unidade de trabalho e esse nome da tarefa não é alterado ao longo da duração dessa UOW. Quando uma UOW associada a um método é iniciada devido à chamada do método, se um nome de tarefa estiver associado ao método, esse nome de tarefa é utilizado para denominar a UOW. Uma tarefa designada a uma unidade de trabalho é considerada uma UOW denominada.

Se um nome de tarefa não estiver associado ao método que iniciou a UOW, uma intenção de acesso padrão será utilizada e a UOW não será denominada. Uma unidade de trabalho pode apenas ser denominada quando a UOW é iniciada e esse nome da tarefa permanece durante a existência da UOW. Além disso, a tarefa designada a uma UOW nunca pode ser alterada durante a existência dessa UOW. Quaisquer nomes de tarefas associados a um método são ignorados se esse método não iniciar uma UOW (seja gerenciada por contêiner ou gerenciada por componente).

Não é possível alterar o nome da tarefa designado a uma unidade de trabalho. Porém, é possível que em uma sequência de chamada consistindo em muitas chamadas de aplicativos diferentes, talvez seja necessário utilizar um nome de tarefa diferente para chamadas diferentes. Nesse caso, é importante que o implementador inicie uma nova UOW e associe a ela o nome da tarefa necessário. Por exemplo, suponha que você tenha os seguintes beans: sb1 é um bean de sessão, eb2 e eb3 são beans de entidade CMP (Container Managed Persistence). Quando sb1 é chamado, uma transação é iniciada e a tarefa 't1' é associada a ela. Além disso, suponha que sb1 em seguida chame eb2 e eb3. Se nem eb2 nem eb3 criar uma unidade de trabalho, esses beans serão executados no contexto da UOW de sb1 e assim também seu nome da tarefa (t1). Se eb2 ou eb3 precisar ser executado em um nome da tarefa diferente de t1, esses beans deverão definir uma unidade de trabalho e associar a ela o nome da tarefa apropriado.

Observe que se um implementador de aplicativo não configurar especificamente uma transação em um método, o WebSphere Application Server criará uma transação global por padrão. Isso é importante porque se uma tarefa for definida em um método, mas uma UOW não for especificamente configurada nesse método, o contêiner EJB criará automaticamente uma transação global em nome desse método. Assim, esse nome da tarefa é associado à UOW e quaisquer perfis do aplicativo mapeados para essa tarefa são utilizados.

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 Modo de Compatibilidade 5.x do Perfil do Aplicativo e de aplicativos que não estão em execução no modo de compatibilidade.

Ícone que indica o tipo de tópico Tópico de Conceito



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