Proveedor de mensajería predeterminado: consejos para la resolución de problemas

Utilice este conjunto de consejos específicos como ayudar para la resolución de problemas de mensajería JMS con el proveedor de mensajería predeterminado.

Para ver consejos generales sobre la resolución de problemas con la mensajería de WebSphere Application Server, consulte Sugerencias para la resolución de problemas de mensajería. Este tema proporciona consejos adicionales específicos del proveedor de mensajería predeterminado y su uso de tecnologías de integración de servicios.

Un destino pasa a estar lleno y ya no puede recibir mensajes porque los mensajes existentes no se consumen.

Al configurar una aplicación para que utilice el proveedor de mensajería predeterminado, asócielo a cualquiera de los siguientes conjuntos de recursos:
  • Uno o más beans de mensajes conectados a través de las especificaciones de activación JMS (Java™ Message Service).
  • Uno o varios beans de empresa conectados mediante fábricas de conexiones JMS y destinos JMS.

Puede utilizar el siguiente panel de la consola administrativa para inspeccionar la configuración de las aplicaciones y los recursos JMS que utilizan el destino: Recursos de aplicación para este destino.

Este panel puede ayudarle a encontrar la causa del problema facilitándole una vista de alto nivel de muchos recursos pertinentes.

Una aplicación JMS ya no puede enviar ni recibir mensajes.

Al configurar una aplicación para que utilice el proveedor de mensajería predeterminado, asócielo a cualquiera de los siguientes conjuntos de recursos:
  • Uno o más beans de mensajes conectados a través de las especificaciones de activación JMS (Java Message Service).
  • Uno o varios beans de empresa conectados mediante fábricas de conexiones JMS y destinos JMS.

Conecte la aplicación a los beans de mensajes o enterprise beans a través del descriptor de despliegue de la aplicación, o a través del código de la propia aplicación. Si ha conectado la aplicación a través del descriptor de despliegue, puede utilizar el siguiente panel de la consola administrativa para ver como un todo la aplicación de negocio instalada e inspeccionar la configuración de los recursos JMS que la aplicación está utilizando: Recursos de mensajería para esta aplicación.

Este panel puede ayudarle a encontrar la causa del problema facilitándole una vista de alto nivel de muchos recursos pertinentes.

Las aplicaciones cliente JMS en ejecución en el contenedor de cliente Java EE (Java Platform, Enterprise Edition) fallan al invocar al método ConnectionFactory.createConnection

Cuando una aplicación cliente JMS se ejecuta dentro del contenedor de cliente de Java EE, en una máquina que no ejecute ningún otro proceso de WebSphere Application Server, puede fallar una llamada al método ConnectionFactory.createConnection con el error siguiente:
CWSIJ0005E: No se puede encontrar una instancia de servicio Infraestructura de canales para
utilizarla para las comunicaciones. 
Causa

ConnectionFactory para el proveedor de mensajería predeterminado tiene una dependencia respecto al servicio Infraestructura de canales. Localiza el servicio Infraestructura de canales utilizando una búsqueda en el espacio de nombres JNDI. Para conectarse a un servicio de denominación, ConnectionFactory utiliza un objeto InitialContext creado mediante el constructor predeterminado.

Cuando el cliente JMS se ejecuta en un entorno de servidor de aplicaciones, el objeto InitialContext puede conectarse satisfactoriamente al servicio de denominación, el servicio Infraestructura de canales se localiza y la llamada a createConnection se completa satisfactoriamente.

Sin embargo, cuando el cliente JMS se ejecuta dentro del contenedor de cliente Java EE, el objeto InitialContext utiliza el valor de la propiedad del sistema java.naming.provider.url, para determinar la ubicación del servicio de denominación al que se conectará. Si no se especifica ningún valor para esta propiedad, intentará conectarse a un servicio de denominación situado en el puerto 2809 en la máquina cliente local. Si no hay ningún servidor ejecutándose en la máquina cliente, no habrá ningún servicio de denominación receptor en este puerto de la máquina local. Esto hará que el método createConnection falle con el siguiente error:

Solución
Una aplicación cliente JMS puede especificar el valor de java.naming.provider.url de manera programática, utilizando código con el formato:
String key = "java.naming.provider.url";
String value = "iiop://some.remote.machine:9810";
System.setProperty(key, value);

Este código debe ejecutarse antes de invocar el método createConnection en el objeto ConnectionFactory.

De forma alternativa, si utiliza el script launchClient desde la línea de mandatos para iniciar el contenedor de cliente Java EE, puede especificar cualquiera de los parámetros siguientes de la línea de mandatos:
  • launchClient <CLIENT EAR> -CCBootstrapHost=some.remote.machine -CCBootstrapPort=981
  • launchClient <CLIENT EAR> -CCproviderURL=iiop://some.remote.machine:9810

Con ello se asegurará de que, si no se ha especificado programáticamente ningún URL de proveedor, los objetos InitialContext utilizarán de forma predeterminada el URL de proveedor especificado en la línea de mandatos.


Icon that indicates the type of topic Reference topic



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