Consideraciones acerca de las tareas y las unidades de trabajo
La función de perfilado de aplicaciones funciona bajo el concepto de unidad de trabajo (UOW). UOW en este caso significa una transacción o una sesión de actividad.
El nombre de tarea en un método se utiliza sólo cuando ha comenzado una UOW, porque se ha invocado ese método. Esto favorece un patrón de acceso a datos más predecible basado en la unidad de trabajo activa. Para ser más específico, este procedimiento asegura que se carga un tipo de bean con un único intento de acceso configurado dentro de una UOW, porque un bean se configura con sólo un intento de acceso dentro de un perfil de aplicación. Este intento de acceso configurado para un tipo de bean se determina durante el ensamblaje y se implanta mediante el servicio de perfilado de aplicaciones.
Un nombre de tarea se asocia siempre con una unidad de trabajo y ese nombre de tarea no cambia en el tiempo que dura esa UOW. Cuando comienza una UOW asociada a un método porque se invoca ese método, si hay un nombre de tarea asociado al método, entonces se utiliza ese nombre de tarea para denominar la UOW. Una tarea asignada a una unidad de trabajo se considera una UOW con nombre.
Si no se asocia un nombre de tarea al método que comenzó la UOW, entonces se utiliza un intento de acceso predeterminado y no se nombra la UOW. Sólo se puede asignar un nombre a una unidad de trabajo cuando esta UOW se ha empezado y ese nombre de tarea permanece durante el tiempo de vida de la UOW. Además, la tarea asignada a una UOW no se puede cambiar nunca durante el tiempo de vida de la UOW. Cualquier nombre de tarea asociado a un método se omite si ese método no comienza una UOW (gestionada por contenedor o gestionada por componente).
No es posible cambiar el nombre de tarea asignado a una unidad de trabajo. Sin embargo, es posible que en una secuencia de llamadas que consta de muchas llamadas de aplicación diferentes, sea necesario utilizar un nombre de tarea diferente para llamadas distintas. En este caso, es importante que el desplegador empiece una nueva UOW y asocie el nombre de tarea necesario con la UOW. Por ejemplo, suponga que tiene los siguientes beans: sb1 es un bean de sesión, eb2 y eb3 son beans de entidad de CMP (persistencia gestionada por contenedor). Cuando se llama a sb1, se empieza una transacción y se asociada a ella la tarea 't1'. Suponga además que sb1 llamada entonces a eb2 y eb3. Si eb2 o eb3 no pueden crear una unidad de trabajo, estos beans se ejecutan en el contexto de UOW de sb1 y como el nombre de tarea (t1). Si eb2 o eb3 necesitan ejecutarse dentro de un nombre de tarea distinto de t1, estos beans deben definir una unidad de trabajo y asociar a ella el nombre de tarea apropiado.
Tenga en cuenta que si un desplegador de aplicaciones no configura específicamente una transacción en un método, WebSphere Application Server crea una transacción global predeterminada. Esto es importante porque si se define una tarea en un método, pero no se configura específicamente una UOW en ese método, el contenedor EJB crea automáticamente una transacción global en nombre de dicho método. Como tal, este nombre de tarea se asocia con la UOW y se utilizan los perfiles de aplicaciones correlacionados con esta tarea.