Transacciones JMS

Los destinos JMS que proporcionan mensajes a un nodo JMSInput o reciben mensajes de un nodo JMSOutput se pueden coordinar por el punto de sincronización como parte de una transacción global de flujo de mensajes.

Transacciones que incluyen el coordinador de punto de sincronización

Diagrama que representa el flujo de mensajes a través de un nodo JMSInput y un nodo JMSOutput, incluyendo un coordinador de punto de sincronización.

En este diagrama, un nodo JMSInput consume mensajes de un tema y un nodo JMSOutput produce dichos mensajes en una cola JMS. Los nodos se conectan con un proveedor JMS y están en sesión con dicho proveedor. Cualquier nodo de entrada de flujo de mensajes puede indicar al coordinador de punto de sincronización externo cuándo se inicia y finaliza una transacción de flujo de mensajes y si los recursos que el flujo ha tocado se deben confirmar o restituir.

El coordinador de punto de sincronización envía peticiones que cumplen con las normas de XA/Open a todos los gestores de recursos participantes para informarles que se preparen. A continuación, se confirman o se restituyen los cambios. Los gestores de recursos, por ejemplo WebSphere MQ, DB2 y cualquier proveedor JMS que cumpla los estándares de XA pueden participar en una transacción global. El coordinador de punto de sincronización externo es WebSphere MQ en plataformas distribuidas y RRS (Resource Recovery Services - Servicios de recuperación de recursos) en z/OS.

El nodo JMSInput y el nodo JMSOutput sólo pueden participar en una transacción global si el proveedor JMS al que se conectan soporta la interfaz XA/Open mediante la clase XAResource de JMS. WebSphere MQ Java Client es un ejemplo de proveedor JMS.

Transacciones dudosas

Se pueden producir transacciones dudosas cuando un Gestor de recursos no responde a una llamada de un gestor de punto de sincronización, cuando la llamada es para confirmar o restituir recursos. Durante el arranque del gestor de colas de WebSphere MQ del intermediario, se realiza un paso de recuperación inicial para asegurarse de que se resuelven las transacciones dudosas antes de que los flujos de mensajes de intermediario empiecen a procesar entrada nueva. En este paso de recuperación, se incluye un proveedor JMS que participe en las transacciones globales de intermediario.

Configuración para permitir el soporte de transacción global

Es necesario realizar configuración adicional para habilitar el soporte de transacción global para el nodo JMSInput y el nodo JMSOutput. Debe realizar los pasos siguientes:
  1. Establezca la propiedad de Flujo de mensajes Transacción coordinada en .
  2. Para cada nodo JMSInput o JMSOutput que se necesite para participar en la transacción global, establezca la propiedad avanzada Modalidad de transacción en global.
  3. Cree una fábrica de conexiones de cola y proporcione un nombre por omisión, recoverXAQCF o proporcione un nombre definido por el usuario. Consulte el nodo JMSInput o JMSOutput para obtener detalles adicionales sobre cómo crear objetos administrados JNDI.
  4. En plataformas distribuidas, se necesita una tarea de administración de WebSphere MQ antes del despliegue. Esta tarea es necesaria para registrar un componente de intermediario en el gestor de colas. El componente, que se conoce como archivo de conmutación, es una biblioteca compartida (una DLL en Windows).

    Cuando el gestor de colas de WebSphere MQ del intermediario arranca, carga el archivo de conmutación. El archivo de conmutación reenvía las llamadas de transacción XA/Open del coordinador de punto de sincronización al proveedor JMS. Esto asegura que los recursos JMS que participan en la transacción se puedan coordinar en sincronización con otros gestores de recursos que están implicados en la misma transacción.

    La tarea varía según la plataforma.
    • Linux y UNIX
      Para el gestor de colas del intermediario correspondiente a cada proveedor JMS que un nodo JMSInput pueda utilizar, coloque una entrada de sección en un archivo de inicialización, por ejemplo qm.ini. A continuación se muestra un ejemplo de una entrada de sección que se puede añadir cuando se está utilizando WebSphere MQ Java como proveedor JMS:
      XAResourceManager:
      	Name=WBIWMQJMS 
          SwitchFile=/<Vía de acceso de instalación>/lib/JMSSwitch.so
          XAOpenString=<Fábrica de contexto inicial>,
                    <ubicación de enlaces JNDI>'
                    <Principal LDAP>,
                    <Credenciales LDAP>,
                    <Nombre de fábrica de conexiones de recuperación>  
          ThreadOfControl=THREAD 
      donde:

      <Vía de acceso de instalación> es la ubicación de la instalación de WebSphere Message Broker. Este valor es obligatorio.

      Los parámetros que se proporcionan en XAOpenString están delimitados por coma y son posicionales. Cualquier parámetro opcional que falte se debe representar mediante una coma si se proporcionan otros parámetros más adelante en la serie de caracteres.
      • <Fábrica de contexto inicial> Es el identificador de Fábrica de contexto inicial para el proveedor JMS. Este valor es obligatorio.
      • <Ubicación de enlaces JNDI> Es la vía de acceso al archivo de enlaces o la ubicación de directorio LDAP de los objetos administrados JNDI que se pueden utilizar para crear una fábrica de contexto inicial para la conexión JMS. Cuando proporcione la vía de acceso al archivo de enlaces, no incluya el nombre de archivo. Consulte el nodo JMSInput o JMSOutput para obtener detalles adicionales sobre cómo crear los objetos administrados JNDI. Este valor es obligatorio.
      • <Principal LDAP> Es un parámetro opcional que se utiliza para especificar el principal (ID de usuario) que puede ser necesario cuando se utiliza una base de datos LDAP para que contenga los objetos administrados JNDI.
      • <Credenciales LDAP> Es un parámetro opcional que se utiliza para especificar las Credenciales (contraseña) que se pueden necesitar si se utiliza una base de datos LDAP protegida por contraseña para que contenga los objetos administrados JNDI.
      • <Nombre de fábrica de conexiones de recuperación> Es un parámetro opcional que se utiliza para especificar el nombre de un objeto de Fábrica de conexiones de colas en los objetos administrados JNDI para la recuperación, cuando se necesita el nombre que no sea el valor por omisión.

      Debe especificar una sección en el archivo .ini de gestor de colas del intermediario para cada proveedor JMS que desee utilizar, es decir, debe haber una sección para cada nuevo proveedor JMS, donde el proveedor JMS lo puede especificar cualquier nodo JMSInput o JMSOutput incluido en un flujo de mensajes que se ejecute en un intermediario.

      Los valores para la Fábrica de contexto inicial y la Ubicación de los enlaces JNDI de la sección deben coincidir con los especificados en los nodos JMSInput o JMSOutput de los flujos de mensajes.

      Los parámetros LDAP deben coincidir con los que se han especificado utilizando el mandato mqsicreatebroker o mqsichangebroker.

      El Nombre de fábrica de recuperación debe coincidir con un nombre de Fábrica de conexiones de colas creado en los objetos administrados JNDI. Si se omite, se utiliza una fábrica por omisión denominada recoverXAQCF. En cualquier caso, este valor debe hacer referencia a un objeto administrado JNDI que ya se haya creado.

      A continuación se muestra una sección de ejemplo:

      XAOpenString=com.sun.jndi.fscontext.RefFSContextFactory,
           /u/myJndiFileLocation,
           ,
           ,
           myRecoveryQCFName    
      Donde se omiten los parámetros LDAP, pero se especifica una Fábrica de conexiones de colas definida por el usuario para que se recupere.
    • En plataformas Windows

      Como en el caso de Linux y Unix, se necesita la misma información en Windows pero se configura utilizando el componente WebSphere MQ Explorer o WebSphere MQ Services, dependiendo de qué version de WebSphere MQ esté utilizando. En Windows, el archivo de conmutación se denomina JMSSwitch.dll. Consulte la Guía de administración del sistema WebSphere MQ para obtener detalles sobre cómo actualizar el archivo qm.ini. La entrada adicional, denominada XACloseString, debe coincidir con los valores proporcionados para XAOpenString.

    • En z/OS

      En WebSphere Message Broker, el único proveedor JMS soportado actualmente es IBM WebSphere MQ Java Client. La única modalidad de transporte soportada actualmente para el cliente es la modalidad BIND. No se necesitan pasos de configuración adicionales.

    Para obtener más información, consulte la sección sobre la configuración para las transacciones coordinadas en los temas del nodo JMSInput y del nodo JMSOutput.
  5. El proveedor JMS puede proporcionar archivos jar adicionales que son necesarios para el soporte de transacción. Consulte la documentación del proveedor JMS para obtener más información. Por ejemplo, en plataformas distribuidas (no z/OS), el proveedor JMS de WebSphere MQ proporciona un archivo jar adicional com.ibm,mqetclient.jar. Este jar también se debe añadir al directorio shared_classes de intermediario. En Windows, este directorio es C:\Documents and Settings\All Users\Application Data\IBM\MQSI\shared-classes. Para obtener más información, consulte la sección sobre cómo dejar disponible el cliente de proveedor JMS en los nodos JMS en los temas siguientes: Nodo JMSInput.

Elección de proveedor JMS

Si se necesita coordinación de transacciones, se puede utilizar cualquier proveedor JMS que se ajuste a la Especificación Java Message Service, versión 1.1 y que soporte la API XAResource de JMS durante la sesión JMS.

Si el diseñador de mensajes ha especificado un proveedor que no se ajusta a la especificación de XA, sólo se soporta la modalidad no transaccional. En este caso, debe establecer la propiedad Modalidad de transacción en no para todos los nodos JMSInput y JMSOutput.

Referencia relacionada
Tipos de mensaje JMS
Estructura de mensaje JMS
Objetos administrados JNDI
Nodo JMSInput
Nodo JMSOutput
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac24879_