Soporte de actividades empresariales y de compensación de transacciones

Una actividad empresarial es una colección de tareas enlazadas entre sí de modo que su resultado es el acordado. A diferencia de las transacciones atómicas, las actividades como enviar un correo electrónico pueden ser difíciles o imposibles de retrotraer de forma atómica y, por lo tanto, requieren un proceso de compensación en caso de que se produzca un error. El soporte de actividades empresariales de WebSphere Application Server proporciona esta posibilidad de compensación a través de los ámbitos de actividad empresarial.

Cuando se debe utilizar el soporte de actividades empresariales

Utilice el soporte de actividades empresariales cuando tenga una aplicación que requiera compensación. Una aplicación requiere compensación si las operaciones no pueden retrotraerse atómicamente. Generalmente, este caso de ejemplo se debe a una de las siguientes razones:
  • La aplicación utiliza varios recursos que no son XA (Extended Architecture).
  • La aplicación utiliza más de una transacción atómica, por ejemplo, los enterprise beans que tienen Necesita nuevo como el valor del campo Transacción del descriptor de despliegue de transacción del contenedor.
  • La aplicación no se ejecuta en una transacción global.
El siguiente diagrama muestra una aplicación de servicio web sencilla que utiliza el soporte de actividades empresariales. Los servicios de venta, almacén y fabricación se ejecutan en entornos que no son de WebSphere Application Server. El vendedor llama al servicio de suministro, que se ejecuta en WebSphere Application Server, que delega las tareas a los servicios de almacén y fabricación. La implementación del servicio de proveedor contiene un bean de sesión sin estado, que llama a otros beans de sesión sin estado que están asociados con los servicios de almacén y fabricación y que realizan trabajo que se puede compensar. Estos otros beans de sesión tienen un manejador de compensación , es decir, una parte de lógica que se asocia con un componente de aplicación durante el tiempo de ejecución y realiza actividades de compensación como, por ejemplo, el reenvío de un correo electrónico.
Consulte el texto con la descripción.

Diseño de aplicaciones

Los contextos de actividad empresarial se propagan con los mensajes de aplicaciones y, por lo tanto, pueden distribuirse entre componentes de aplicaciones que no estén co-ubicados en el mismo servidor. A diferencia de los contextos de transacciones atómicas, los contextos de actividad empresarial se propagan en mensajes de llamada-respuesta (de bloqueo) síncronos y mensajes unidireccionales asíncronos. Un componente de aplicación que se ejecuta en un ámbito de actividad empresarial es responsable de garantizar que cualquier trabajo asíncrono que inicie se complete antes de que se haya completado el propio proceso del componente. Una aplicación que inicia trabajo asíncrono utilizando un patrón de mensajes enviar y olvidar no debe utilizar los ámbitos de actividad empresarial, porque este tipo de aplicaciones no tiene ningún modo de detectar si se ha completado este proceso asíncrono.

Sólo los enterprise beans que tienen transacciones gestionadas por contenedor pueden utilizar las funciones de actividades empresariales. Los enterprise beans que explotan los ámbitos de actividad empresarial pueden ofrecer interfaces de servicios web, pero también pueden ofrecer interfaces Java™ estándar remotas o locales de enterprise beans. El contexto de actividad empresarial se propaga en los mensajes de servicios web utilizando un elemento CoordinationContext estándar e interoperativo de Web Services Business Activity (WS-BA). WebSphere Application Server también puede propagar el contexto de actividad empresarial en las llamadas RMI a enterprise beans cuando no se utilicen los servicios web, pero esta forma de contexto no puede interactuar con los entornos que no son de WebSphere Application Server. Es posible que desee utilizar este caso de ejemplo homogéneo si necesita compensar una aplicación interna de su empresa. Si desea utilizar la compensación de actividad empresarial en un entorno heterogéneo, exponga los componentes de aplicación como servicios web.

Los contextos de actividad empresarial se pueden propagar a través de cortafuegos y fuera del dominio de WebSphere Application Server. La topología que utilice para lograr esta propagación puede afectar al comportamiento de afinidad y a la alta disponibilidad de la transacción de actividad empresarial.

Desarrollo y despliegue de aplicaciones

WebSphere Application Server proporciona un modelo de programación para crear ámbitos de actividad empresarial y para asociar los manejadores de compensación con esos ámbitos de actividad empresarial. WebSphere Application Server también proporciona una interfaz de programas de aplicación para especificar los datos de compensación y comprobar o alterar el estado de una actividad empresarial. Para utilizar el soporte de actividades empresariales debe establecer ciertos descriptores de despliegue de la aplicación adecuadamente, proporcionar una clase de manejador de compensación si es necesario y habilitar el soporte de actividades empresariales en cualquier servidor que ejecute la aplicación.
Nota: Las aplicaciones pueden utilizar el soporte de actividades empresariales sólo si se despliegan en un WebSphere Application Server de la Versión 6.1 o posterior. Las aplicaciones no pueden utilizar el soporte de actividades empresariales si se despliegan en un clúster que incluya servidores WebSphere Application Server Versión 6.0.x.

Ámbitos de actividad empresarial

El ámbito de una actividad empresarial es el de una unidad de trabajo principal de WebSphere Application Server: una transacción global, una sesión de actividad o un contenedor de transacciones locales (LTC). Un ámbito de actividad empresarial no es una nueva unidad de trabajo (UOW), es un atributo de una UOW principal existente. Por lo tanto, existe una relación de uno a uno entre un ámbito de actividad empresarial y una UOW.

En un despliegue de WS-BA, la UOW debe estar gestionada por contenedor:
  • La UOW puede ser un enterprise bean de la transacción gestionada por el contenido (CMT) que crea una transacción global.
  • La UOW puede ser un contenedor de transacciones locales (LTC) donde el contenedor es responsable de iniciar y finalizar las transacciones locales de gestor de recursos (RMLT). Es decir, en los atributos del descriptor de despliegue transaccional, el atributo Resolver de la transacción local debe estar establecido en ContainerAtBoundary. Para utilizar WS-BA, no debe establecer el atributo Resolver en Application.
Cualquier UOW principal puede tener un ámbito de actividad empresarial asociado con ella. Si un componente que se ejecuta en una UOW que está asociada con un ámbito de actividad empresarial llama a otro componente, esa solicitud propaga el ámbito de actividad empresarial de modo que cualquier trabajo realizado por el nuevo componente se asocia con el mismo ámbito de actividad empresarial que el componente que llama. El componente al que se llama puede crear una nueva UOW, por ejemplo, si un enterprise bean tiene un valor de Transacción de Necesita nuevo o se ejecuta en la misma UOW que el componente que llama. Si se inicia una nueva UOW, se crea un nuevo ámbito de actividad empresarial y se asocia con la nueva UOW. El ámbito de actividad empresarial recién creado es un hijo del ámbito de actividad empresaria asociado con la UOW que llama. En el siguiente diagrama, EJB1a que se ejecuta en UOW1 llama a dos componentes: EJB1b, que también se ejecuta en UOW1, y EJB2, que crea una nueva UOW, UOW2. El enterprise bean EJB1b llama a otro enterprise bean, EJB3, que crea otra UOW nueva, UOW3. Como cada nueva UOW se crea mediante un componente cuya UOW ya tiene una asociación con el ámbito de actividad empresarial ÁmbitoAE1, las UOW recién creadas se asocian con los nuevos ámbitos de actividad empresarial internos, ÁmbitoAE2 y ÁmbitoAE3.
Consulte el texto para obtener una descripción.

Los ámbitos de actividad empresarial internos deben completarse antes que los ámbitos de actividad empresarial externos. Los ámbitos de actividad empresarial internos como, por ejemplo, ÁmbitoAE2, tienen una asociación con el ámbito de actividad empresarial externo, en este caso ÁmbitoAE1. Todos los ámbitos de actividad empresarial reciben la indicación de que deben cerrarse si la UOW asociada a ellos se completa satisfactoriamente o compensarse si la UOW asociada genera un error. Si ÁmbitoAE2 se completa satisfactoriamente, cualquier manejador de compensación activo que sea propiedad de ÁmbitoAE2 se mueve a ÁmbitoAE1 y debe seguir la misma dirección de finalización que cuando se completa ÁmbitoAE1: compensarse o cerrarse. Si ÁmbitoAE2 genera un error, los manejadores de compensación activos se compensan automáticamente y no se mueve nada al ÁmbitoAE1 externo. Cuando un ámbito de actividad empresarial interno genera un error como resultado de un error en la UOW asociada, se genera una excepción de servidor de aplicaciones en el componente de aplicación que llama, que se ejecuta en la UOW externa.

Por ejemplo, si se produce un error en la UOW interna, puede generar una excepción TransactionRolledBackException. Si la aplicación que llama puede manejar la excepción, por ejemplo llamando otra vez al componente llamado o llamando a otro componente, la UOW que llama y el ámbito de actividad empresarial asociado pueden completarse satisfactoriamente aunque se haya fallado el ámbito de actividad empresarial interno. Si el diseño de la aplicación requiere que se produzca un error en la UOW que llama y que el ámbito de actividad empresarial asociado se compense, el componente de aplicación que llama debe hacer que se produzca un error en la UOW, por ejemplo, permitiendo que cualquier excepción del sistema de la UOW anómala sea manejada por el contenedor correspondiente.

Cuando el ámbito de actividad empresarial externo finaliza, su ejecución satisfactoria o anómala determina la dirección de la finalización (cierre o compensación) de los manejadores de compensación activos que son propiedad del ámbito de actividad empresarial externo, incluidos los que se promocionan mediante la finalización satisfactoria de los ámbitos de actividad empresarial internos. Si el ámbito de actividad empresarial externo finaliza satisfactoriamente, hace que todos los manejadores de compensación activos se cierren. Si el ámbito de actividad empresarial externo no finaliza satisfactoriamente, hace que todos los manejadores de compensación activos se compensen.

Este comportamiento de compensación se resume en la tabla siguiente.
Tabla 1. Comportamiento de compensación de un único ámbito de actividad empresarial. La tabla lista las posibles combinaciones satisfactorias o con error para ámbitos de actividad empresarial internos o externos, así como el comportamiento de compensación asociado con cada combinación.
Ámbito de actividad empresarial interno ámbito de actividad empresarial externo Comportamiento de compensación
Se realiza satisfactoriamente Se realiza satisfactoriamente Cualquier manejador de compensación que sea propiedad del ámbito de actividad empresarial interno espera a que la UOW exterior finalice. Cuando la UOW externa se realiza satisfactoriamente, el ámbito de actividad empresarial externo hace que todos los manejadores de compensación se cierren.
No se realiza satisfactoriamente Se realiza satisfactoriamente Cualquier manejador de compensación activo que sea propiedad del ámbito de actividad empresarial interno se compensa. Se genera una excepción en la UOW externa. Si esta excepción se captura, cuando la UOW externa se realiza satisfactoriamente, el ámbito de actividad empresarial externo hace que todos los manejadores de compensación activos que queden se cierren.
No se realiza satisfactoriamente No se realiza satisfactoriamente Cualquier manejador de compensación activo que sea propiedad del ámbito de actividad empresarial interno se compensa. Se genera una excepción en la UOW externa. Si esta excepción se captura, el ámbito de actividad empresarial externo no se realiza satisfactoriamente. Cuando el ámbito de actividad empresarial externo no se realiza correctamente, debido a la excepción no manejada o a otras razones, todos los manejadores de compensación activos que queden se compensan.
Se realiza satisfactoriamente No se realiza satisfactoriamente Cualquier manejador de compensación que sea propiedad del ámbito de actividad empresarial interno espera a que la UOW exterior finalice. Cuando la UOW externa no se realiza satisfactoriamente, el ámbito de actividad empresarial externo hace que todos los manejadores de compensación se compensen.

Cuando finaliza una UOW con un ámbito de actividad empresarial asociado, el ámbito de actividad empresarial siempre finaliza en la misma dirección que la UOW asociada con ella. El único modo de modificar la dirección del ámbito de actividad empresarial es modificar la UOW con la está asociada, que puede llevarse a cabo mediante el método setCompensateOnly de la API de actividad empresarial.

Un manejador de compensación que esté registrado en una UOW transaccional puede estar inactiva inicialmente, dependiendo del método invocado de la API de actividad empresarial. En esta situación, los manejadores inactivos se activan cuando la UOW en la que está declarado el manejador finaliza satisfactoriamente. Un manejador de compensación registrado fuera de una UOW transaccional siempre se activa inmediatamente. Para obtener más información, consulte el tema sobre la API de actividad empresarial.

Cada uno de los ámbitos de actividad empresarial del programa representa una actividad empresarial. Por ejemplo, la actividad empresarial externa que se ejecuta en ÁmbitoAE1 puede ser un caso de ejemplo de reserva de vacaciones, donde ÁmbitoAE2 es la actividad de reserva de vuelos y ÁmbitoAE3 la reserva de hotel. Si las reservas de vuelo u hotel no se realizan satisfactoriamente, la reserva de vacaciones global no se realiza correctamente de manera predeterminada. Alternativamente, si, por ejemplo, la reserva de vuelo no se realiza satisfactoriamente, es posible que desee que la aplicación intente reservar un vuelo utilizando otro componente que represente a una compañía aérea distinta. Si la reserva de vacaciones global no se realiza correctamente, la aplicación puede utilizar manejadores de compensación para cancelar cualquier vuelo u hotel que ya se hayan reservado satisfactoriamente.

Utilización de los ámbitos de actividad empresarial por los componentes de aplicación

Los componentes de aplicación no utilizan los ámbitos de actividad empresarial predeterminados. Utilice las herramientas de ensamblaje de WebSphere Application Server para especificar el uso de un ámbito de actividad empresarial y para identificar cualquier clase de manejador de compensación para el componente:
Configuración predeterminada
Si un contexto de actividad empresarial está presente en una solicitud recibida por un componente sin configuración de ámbito de actividad empresarial, el contenedor almacena el contexto pero no se utiliza durante el ámbito de método del componente de destino. No se crea un nuevo ámbito de actividad empresarial. Si el componente de destino invoca otro componente, el contexto de actividad empresarial almacenado se propaga y lo pueden utilizar otros componentes de compensación.
Ejecutar métodos de enterprise bean en un ámbito de actividad empresarial
El contenedor recibe un contexto de actividad empresarial presente en la solicitud de entrada y éste se pone a disposición del componente de destino. Si se crea una nueva UOW para el método de destino, por ejemplo, porque el método de enterprise bean tiene un valor de Transacción de Necesita nuevo, el ámbito de actividad empresarial recibido se convierte en un ámbito de actividad empresarial externo de una actividad empresarial recién creada. Si la UOW se propaga a partir del componente que llama y la utiliza el método, el método utilizará el ámbito de actividad empresarial recibido. Si un ámbito de actividad empresarial no existe en la invocación, se crea un nuevo un ámbito de actividad empresarial que el método utilizará.
Para crear un ámbito de actividad empresarial cuando se invoque un enterprise bean, se debe configurar el enterprise bean para que ejecute métodos de enterprise bean en un ámbito de actividad empresarial. También debe configurar los descriptores de despliegue del método que se invoque para especificar la creación de una nueva UOW cuando se la invoque. Para obtener detalles, consulte el tema sobre cómo crear una aplicación que utiliza el soporte WS-BA.

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjta_wsbascope
File name: cjta_wsbascope.html