Sugerencias para la resolución de problemas de WS-Notification

Sugerencias para la resolución de problemas de mensajería de publicación y suscripción de WS-Notification para servicios web.

[z/OS]Para ayudarle a identificar y resolver los problemas relacionados con WS-Notification, utilice los recursos de rastreo y registro de WebSphere Application Server tal como se describe en Establecimiento del rastreo de componentes (CTRACE).

Para habilitar el rastreo para WS-Notification, establezca la serie de rastreo del servidor de aplicaciones en SIBWsn=all=enabled:com.ibm.ws.sib.webservices.*=all=enabled. Si detecta un problema que considera que podría estar relacionado con WS-Notification, puede comprobar los mensajes de error en la consola administrativa de WebSphere Application Server y en el archivo SystemOut.log del servidor de aplicaciones. También puede habilitar el rastreo de depuración del servidor de aplicaciones para obtener un vuelco de excepciones detallado.

Nota: En este tema se hace referencia a uno o más de los archivos de registro del servidor de aplicaciones. Como alternativa recomendada, puede configurar el servidor para utilizar la infraestructura de registro y rastreo HPEL en lugar de utilizar los archivos SystemOut.log , SystemErr.log, trace.log y activity.log en sistemas distribuidos y de IBM® i. Puede también utilizar HPEL junto con sus recursos de registro nativos de z/OS. Si utiliza HPEL, puede acceder a toda la información de registro y rastreo utilizando la herramienta de línea de mandatos LogViewer desde el directorio bin de perfil de servidor. Consulte la información sobre la utilización de HPEL para resolver problemas de aplicaciones para obtener más información sobre la utilización de HPEL.

En WS-Notification: limitaciones conocidas, se proporciona una lista de las limitaciones principales conocidas que se aplican cuando se utiliza WS-Notification.

Los mensajes del sistema WebSphere Application Server se anotan cronológicamente desde diferentes fuentes, incluidos los componentes y aplicaciones del servidor de aplicaciones. Los mensajes anotados cronológicamente por los componentes del servidor de aplicaciones y los productos IBM asociados comienzan por un identificador de mensaje exclusivo que indica qué componente o aplicación ha emitido el mensaje. El prefijo del componente WS-Notification es CWSJN.

El tema Consulta para la resolución de problemas: mensajes contiene información sobre todos los mensajes de WebSphere Application Server, indexados por el prefijo de mensaje. Para cada mensaje, existe una descripción del problema y los detalles de la acción que puede llevar a cabo para solucionar el problema.

Este tema incluye un conjunto de sugerencias que le ayudarán a solucionar los problemas más comunes:

Una aplicación JAX-WS que es un consumidor de notificaciones de intermediario debe reconocer una acción SOAP de intermediario de notificación.

JAX-WS admite la asignación basada en acción y las aplicaciones de consumidor JAX-WS deben aceptar el identificador de recursos uniforme (URI) de acción http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify. Puede habilitarlo de cualquiera de los modos siguientes:
  • En el archivo WSDL de la aplicación consumidora, modifique la información del enlace SOAP para que contenga el URI de la acción de notificar:
    <wsdl:operation name="oneWayRawSubscriptionNotify">
        <soap:operation soapAction="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify" />
        <wsdl:input name="oneWayRawSubscriptionNotifyRequest">
            <soap:body use="literal" />
        </wsdl:input>
    </wsdl:operation>
  • En el archivo WSDL de la aplicación consumidora, modifique la información de tipo de puerto para que contenga el URI de la acción de notificar:
    <wsdl:operation name="oneWayRawSubscriptionNotify">
        <wsdl:input message="impl:oneWayRawSubscriptionNotifyRequest"
                    name="oneWayRawSubscriptionNotifyRequest"
                    wsam:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify">
        </wsdl:input>
    </wsdl:operation>
  • Utilice la anotación JAX-WS para que especifique el URI de acción http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify en el código de la aplicación. Para obtener más información, consulte la propiedad action de la anotación WebMethod en el tema Anotaciones JAX-WS.

El archivo PublisherRegistrationManager.wsdl no lo analiza correctamente wsimport a menos que incluya un archivo de enlaces JAX-WS.

Cuando publica los archivos WSDL para una aplicación WS-Notification en un archivo comprimido y luego ejecuta el mandato wsimport para el archivo PublisherRegistrationManager.wsdl, se muestra el siguiente mensaje de anomalía:
[ERROR] se han producido los siguientes conflictos de nombres:
com.ibm.websphere.wsn.publisher_registration_manager.ResourceNotDestroyedFault
línea 2 del archivo:/vía_acceso_a_wsdl/PublisherRegistrationManager.wsdl

Este error es debido a que el WSDL del gestor de registros del editor utiliza las especificaciones WS-Notification y WS-ResourceLifetime y ambas hacen referencia a un elemento ResourceNotDestroyedFault que comparte el mismo nombre de mensaje. La siguiente es la parte relevante del archivo WSDL del gestor de registros del editor:

  <wsdl:operation name="DestroyRegistration">
    <wsdl:input name="DestroyRegistrationRequest" message="wsn-brw:DestroyRegistrationRequest" 
      wsam:Action="http://docs.oasis-open.org/wsn/brw-2/PublisherRegistrationManager/DestroyRegistrationRequest" 
      wsaw:Action="http://docs.oasis-open.org/wsn/brw-2/PublisherRegistrationManager/DestroyRegistrationRequest"/>
    <wsdl:output name="DestroyRegistrationResponse" message="wsn-brw:DestroyRegistrationResponse" 
      wsam:Action="http://docs.oasis-open.org/wsn/brw-2/PublisherRegistrationManager/DestroyRegistrationResponse" 
      wsaw:Action="http://docs.oasis-open.org/wsn/brw-2/PublisherRegistrationManager/DestroyRegistrationResponse"/>
    <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault" 
      wsam:Action="http://docs.oasis-open.org/wsrf/fault" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/fault"/>
    <wsdl:fault name="ResourceNotDestroyedFault" message="wsn-brw:ResourceNotDestroyedFault" 
      wsam:Action="http://docs.oasis-open.org/wsn/fault" wsaw:Action="http://docs.oasis-open.org/wsn/fault"/>
  </wsdl:operation>

<!-- Algunas partes se han omitido -->

<!-- Un extracto de WS-ResourceLifetime -->
  <wsdl:operation name="Destroy">
    <wsdl:input name="DestroyRequest" message="wsrf-rlw:DestroyRequest" 
      wsam:Action="http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyRequest" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyRequest"/>
    <wsdl:output name="DestroyResponse" message="wsrf-rlw:DestroyResponse" 
      wsam:Action="http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyResponse" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination/DestroyResponse"/>
    <wsdl:fault name="ResourceNotDestroyedFault" message="wsrf-rlw:ResourceNotDestroyedFault" 
      wsam:Action="http://docs.oasis-open.org/wsrf/fault" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/fault"/>
    <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault" 
      wsam:Action="http://docs.oasis-open.org/wsrf/fault" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/fault"/>
    <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault" 
      wsam:Action="http://docs.oasis-open.org/wsrf/fault" 
      wsaw:Action="http://docs.oasis-open.org/wsrf/fault"/>
  </wsdl:operation>

Para resolver este conflicto de nombres, debe incluir el archivo de enlaces JAX-WS ibm-wsn-jaxws.xml como un argumento para el mandato wsimport. Este archivo de enlaces asegura que los elementos que están en conflicto se correlacionen con nombres de clases diferentes.

El archivo ibm-wsn-jaxws.xml se encuentra en el directorio raíz_servidor_aplic/util. Por ejemplo: c:\was\util\ibm-wsn-jaxws.xml. Este archivo de enlaces espera encontrar el archivo WSDL al que hace referencia en el mismo directorio en el que se encuentra él mismo, por lo tanto, antes de ejecutar el mandato wsimport, debe copiar el archivo de enlaces en el directorio que contiene el archivo PublisherRegistrationManager.wsdl. A continuación figura un ejemplo de cómo ejecutar el mandato wsimport para incluir el archivo ibm-wsn-jaxws.xml:
c:\was\bin\wsimport -b ibm-wsn-jaxws.xml -keep PublisherRegistrationManager.wsdl

El servicio WS-Notification recibe triggerActionNotSupportedFault

Tiene registrado un editor JAX-WS basado en demanda con un tipo de servicio WS-Notification de la versión 7.0. Cuando el servicio invoca cualquiera de las operaciones de la interfaz PausableSubscriptionManager del editor, el editor responde con un mensaje de excepción triggerActionNotSupportedFault. Las operaciones que desencadenan este mensaje son Renovar, Anular suscripción, Pausar suscripción o Reanudar suscripción.

Verá mensajes similares al texto siguiente en el archivo SystemOut.log del servidor. En este ejemplo, el mensaje de anomalía se desencadena como respuesta al intento del intermediario de anular la suscripción del editor basado en demanda.

triggerActionNotSupportedFault triggerActionNotSupportedFault: messageContext: 
[MessageContext: logID=urn:uuid:13616A3EB4F278A3DC1221827497002] problemAction: 
http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest

CWSJN1029W: Se ha intentado realizar una operación en un NotificationProducer remoto situado con el punto final Address[[xxx/prod_service/NotificationProducerPort]], ReferenceParams[] pero no se ha podido completar la operación. Esta operación se reintentará automáticamente dentro de 2 segundos. 
La operación ha fallado debido a com.ibm.ws.sib.wsn.webservices.WSNWSException: 

CWSJN5035E: Se ha producido un error interno: no se ha podido anular la suscripción desde un editor remoto
en la referencia de punto final Address[[xxx/prod_service/PausableSubscriptionManagerPort]],
ReferenceParams[] debido a la excepción javax.xml.ws.soap.SOAPFaultException:
La [acción] no se ha podido procesar en el receptor.

El servidor continúa intentando anular la suscripción del editor de forma no satisfactoria a intervalos cada vez más cortos.

Cuando el archivo WSDL del editor basado en demanda no especifica un patrón de acción SOAP, WS-Addressing genera uno de forma predeterminada. Si el editor utiliza el tipo de puerto PausableSubscriptionManager para su enlace, los patrones de acción predeterminados que genera WS-Addressing no coinciden con las acciones definidas por la especificación WS-Notification.
Nota: este problema sólo se produce si el editor utiliza el tipo de puerto PausableSubscriptionManager. Si el editor utiliza el tipo de puertoSubscriptionManager, entonces los patrones de acción predeterminados generados por WS-Addressing coinciden con los de la especificación WS-Notification.

Para resolver este problema, en el archivo WSDL del editor bajo demanda debe especificar de forma explícita la acción SOAP que se utilizará para cada una de las operaciones de la interfaz PausableSubscriptionManager. El URI de acción que se utilizará para cada operación está definido en la especificación WS-BaseNotification (Web Services Base Notification) 1.3 disponible en http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsn. Por ejemplo, la acción WS-Addressing de la operación Anular suscripción se define en la especificación como http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest, por lo tanto, debe utilizar esta acción para la operación Anular suscripción del archivo WSDL del editor. El siguiente es un extracto de la sección binding de un archivo WSDL de este tipo:

<wsdl:binding name="PausableSubscriptionManagerBinding" type="wsn-bw:PausableSubscriptionManager">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="Unsubscribe">
<soap:operation soapAction="http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest" />

Del mismo modo, debe especificar las acciones correspondientes para las operaciones Renovar, Pausar suscripción y Reanudar suscripciones de su archivo WSDL del editor.

Existen errores de "Tiempo excedido de conexión" en los archivos de registro del servidor de intermediario

Si ve errores de tipo WebServicesFault ("Tiempo excedido de conexión") en los archivos de registro del servidor de intermediario WS-Notification y tiene un número elevado de consumidores suscritos en su servicio WS-Notification, es posible que el intermediario haya superado el número máximo de conexiones en la agrupación de conexiones del conector de salida HTTP cuando envía los mensajes de notificación de salida a los consumidores suscritos.

Para aumentar el número de conexiones HTTP de la agrupación, establezca la propiedad personalizada com.ibm.websphere.webservices.http.maxConnection en el servidor o servidores en el que se está ejecutando el intermediario. Para obtener más información acerca de esta propiedad, consulte Propiedades personalizadas del transporte HTTP para las aplicaciones de servicios web.

Existen errores de "Falta de memoria" en los archivos de registro del servidor de intermediario

Si ve errores de "Falta de memoria" en los archivos de registro del intermediario WS-Notification y tiene un gran número de consumidores suscritos a su servicio WS-Notification, es posible que el intermediario haya superado el tamaño del almacenamiento intermedio de la JVM asignado al servidor en el que se está ejecutando.

Para aumentar el tamaño máximo del almacenamiento dinámico para el servidor o los servidores en los que se ejecuta el intermediario, consulte Ajuste de la máquina virtual para Java de IBM.

Las aplicaciones de cliente de WebSphere Application Server Versión 6.1 deben manejar las condiciones de error adicionales

En WebSphere Application Server Versión 6.1, el soporte para WS-Notification se basa en un borrador de revisión público de aprobación previo al final de los estándares de WS-Notification. En las versiones posteriores, este soporte se amplía hasta abarcar los estándares aprobados finales. Las diferencias entre los estándares finales y los borradores de revisión públicos WS-Notification son las siguientes:
  • • Se ha añadido una condición de error denominada UnableToGetMessagesFault. Se devuelve en respuesta a una solicitud para la operación GetMessages si alguna condición interna indica que no es posible devolver mensajes. Tenga en cuenta que es distinto a si no hubieran mensajes que devolver, que se maneja de forma distinta y que es el caso más probable.
  • • El esquema de la operación GetMessages ya no requiere que se pase un valor para el número de mensajes a devolver. Si no se pasa ningún valor, se devuelven todos los mensajes disponibles. Esto no afecta a las aplicaciones cliente Versión 6.1, que ya están codificadas para proporcionar un valor.
  • • La operación DestroyPullPoint ahora genera la condición de error ResourceUnknownFault además de las condiciones de error declaradas anteriormente.

El WSDL y los archivos de esquema entregados con WebSphere Application Server Versión 7.0 o posterior se actualizan para reflejar la versión final 1.3 de los estándares WS-Notification.

No es necesario cambiar los servicios WS-Notification existentes. Las aplicaciones cliente existentes también seguirán funcionando sin cambios, pero si también trabajan con nuevos servicios WS-Notification y desea que manejen de forma explícita las nuevas condiciones de error, vuelva a generar los apéndices de cliente utilizando el archivo WSDL del nuevo servicio.

Se produce una excepción debido a que el repositorio de SDO no se ha configurado correctamente

Si intenta crear un servicio WS-Notification Versión 6.1, y obtiene el siguiente rastreo de pila, entonces el repositorio SDO no se ha configurado correctamente. Para resolver este problema, consulte Instalación y configuración del repositorio de SDO.

java.lang.Exception: com.ibm.ws.sib.webservices.admin.config.SIBConfigException: CWSWS5010E: 
No se ha podido almacenar el WSDL ubicado en http://www.ibm.com/websphere/wsn/notification-broker 
debido a la siguiente excepción: com.ibm.ws.sib.webservices.exception.SIBWSUnloggedException: 
CWSWS1007E: Se ha producido la siguiente excepción: 
com.ibm.ws.sdo.config.repository.impl.RepositoryRuntimeException: 
javax.transaction.TransactionRolledbackException: CORBA TRANSACTION_ROLLEDBACK 0x0 No; 
nested exception is: org.omg.CORBA.TRANSACTION_ROLLEDBACK: 
javax.transaction.TransactionRolledbackException: ; nested exception is: 
javax.ejb.TransactionRolledbackLocalException: ; nested exception is: 
com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException: 
PMGR1014E: Se ha producido una excepción al obtener la fábrica de conexiones: 
com.ibm.websphere.naming.CannotInstantiateObjectException: 
threw NameNotFoundException while the JNDI NamingManager was processing a 
javax.naming.Reference object. [Root exception is javax.naming.NameNotFoundException: 
Context: smeagolNode03Cell/nodes/smeagolNode03/servers/server1, name: 
jdbc/com.ibm.ws.sdo.config/SdoRepository: 
First component in name com.ibm.ws.sdo.config/SdoRepository not found. 
[Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: 
IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]] vmcid: 0x0 minor code: 0 completed: No.

Un consumidor de notificaciones recibe varios mensajes para cada notificación de suceso

En algunas situaciones, es posible que reciba más notificaciones en un consumidor de notificaciones determinado, que el número de notificaciones de suceso que hayan sido insertadas en el intermediario de notificaciones por un editor. Por ejemplo, podría publicar 4 mensajes y recibir 8, 12, 16 (o cualquier otro múltiplo de cuatro) mensajes en el consumidor de notificaciones.

Generalmente, esto es debido a que existen dos o más suscripciones activas que se dirigen al consumidor de notificaciones; una situación que se puede producir, si la aplicación de suscriptor se ejecuta más de una vez. Cada vez que se llama a la operación de suscripción, el intermediario de notificaciones debe crear una nueva suscripción (consulte la sección 4.2 de la especificación Web Services Base Notification), que provoca que se entreguen mensajes duplicados, si existe una suscripción anterior.

Para comprobar si es esto lo que está ocurriendo, examine la propiedad SubscriptionReference de las notificaciones recibidas por el consumidor de notificaciones. Esta referencia del punto final contiene el identificador de la suscripción que ha provocado que se enviara la notificación. Si encuentra diferentes identificadores de suscripción quiere decir que hay más de una suscripción activa.

Las aplicaciones suscriptoras deberían borrar las suscripciones, si no son necesarias (o registrarlas con un tiempo de espera excedido), aunque también las puede borrar de forma administrativa utilizando los paneles de tiempo de ejecución, tal como se describe en Enumeración o supresión de suscripciones WS-Notification activas.

Se pueden producir problemas al suprimir motores de mensajería y suscriptores administrados

Cómo suprimir suscriptores administrados

Debe evitar suprimir y volver a crear los motores de mensajería en los miembros del bus para los cuales se han configurado los suscriptores administrados de WS-Notification, puesto que en algunos casos esto puede dejar activa la suscripción del servicio web (y que pasen mensajes de notificación al servidor local) aunque ya haya dejado de estar registrada.

Para evitar esta situación, debería suprimir la configuración de WS-Notification o, simplemente, los suscriptores administrados, en un paso independiente para suprimir el motor de mensajería. Cuando se procesa la actualización de la configuración dinámica o se reinicia el servidor, la suscripción remota del servicio web se borra por completo.

Nota: Este problema no se produce, si sólo se modifica la configuración de WS-Notification; sólo se produce si el motor de mensajería también se suprime.
Suscriptores administrados en un clúster

Cuando elimine motores de mensajería de un clúster, elimínelos en orden numérico de mayor a menor a fin de evitar una situación en que, por ejemplo, haya motores de mensajería numerados como 001 y 002, pero no 000. Esto es para evitar problemas si utiliza WS-Notification, que adjunta una importancia especial al primer motor de mensajería creado de un clúster.

En una topología de clúster, puede haber más de un motor de mensajería que se ejecute en el "miembro del bus" (clúster). Los suscriptores administrados se definen respecto a un punto de servicio (miembro del bus) y, por lo tanto, existen varias alternativas cuando se elige el motor de mensajería que es responsable de la creación de la suscripción al servicio web remoto. En esta situación, el "primer" motor de mensajería del clúster es el responsable de realizar la suscripción. Por ejemplo, en un clúster que contiene tres motores de mensajería, éstos tendrán se denominarán de acuerdo con el patrón xxx-000-yyy, xxx-001-yyy, xxx-002-yyy, y las suscripciones del suscriptor administrado serán gestionadas por el motor de mensajería "000".

Si suprime el motor de mensajería "000" del clúster y, a continuación, reinicia los servidores, las suscripciones gestionadas serán gestionadas a partir de ese momento por el motor de mensajería "001", es decir, el motor con el número más bajo del clúster. Sin embargo, como se ha mencionado anteriormente, si se suprimen y recrean motores de mensajería en miembros del bus para el cual se han configurado los suscriptores administrados, se puede dejar activa la suscripción del servicio web remoto (y pasar mensajes de notificación al servidor local), aunque ya no haya ningún registro correspondiente. Por lo tanto, si posteriormente se añade otro motor de mensajería al clúster y, es ese momento, no hay ningún motor de mensajería xxx-000-yyy definido, el nuevo motor adoptará el nombre de xxx-000-yyy. Así pues, en este caso, es posible que dos motores de mensajería crean a la vez que ambos gestionan la suscripción administrada, lo cual provoca que se realicen múltiples suscripciones al servicio web remoto.

En el caso improbable de que el usuario necesite volver a crear el motor de mensajería xxx-000-yyy, puede evitar que se dupliquen los mensajes de una suscripción administrada mediante los pasos siguientes:
  • Suprima las suscripciones administradas definidas para este clúster.
  • Permita a los motores de mensajería existentes observar la modificación. Esto provoca que los motores de mensajería del clúster supriman las suscripciones administradas que creen que gestionan.
  • Cree el nuevo motor de mensajería del clúster.
  • Vuelva a crear las suscripciones administradas.

Existen diferencias en el uso de destinos de bus con los servicios WS-Notification versión 6.1

Normalmente, se utiliza un destino de bus tal como se describe en Destinos de bus. Sin embargo, este no es el caso de los servicios WS-Notification versión 6.1. El destino asociado a un servicio WS-Notification versión 6.1 no está relacionado con los temas para los que el servicio WS-Notification puede manejar solicitudes y no debe alterar ni mediar el destino. En WS-Notification, la configuración de los temas se maneja mediante los espacios de nombres de tema. Para obtener más información, consulte Creación de un nuevo espacio de nombres de tema WS-Notification permanente.

Cuando se crea un servicio WS-Notification de la Versión 6.1, el asistente configura tres servicios de entrada del bus de integración de servicios WS-Notification, uno para cada uno de los tres roles del servicio WS-Notification:
  • Intermediario de notificaciones
  • Gestor de suscripciones
  • Gestor de registros del editor
Estos servicios de entrada se definen en el mismo bus de integración de servicios que el servicio WS-Notification Versión 6.1, y cada uno de estos servicios de entrada hace referencia al mismo destino de bus.

Una notificación de entrada (de aplicación a intermediario) no es correcta

Las aplicaciones que desean publicar notificaciones de suceso en el intermediario utilizan la operación de notificación. Esta operación se define como una operación de dirección única (servicios web) que indica que no es posible devolver un error (excepción), cuando no es posible completar la operación. Por lo tanto, la aplicación asumirá que la notificación ha tenido éxito, pero las aplicaciones suscriptoras no recibirán el mensaje de notificación.

Es posible que la notificación no sea correcta debido a un error de aplicación (sintaxis del tema no válida), o a una discrepancia entre el código de aplicación y la configuración del servidor (utilizando un espacio de nombres de tema no definido). Entre las razones específicas por las que una notificación de entrada puede fallar se encuentran los siguientes:
  • El tema no es válido: la expresión del tema proporcionada no coincide con la sintaxis del dialecto indicado, o especifican un dialecto no soportado. Se trata de un error de aplicación.
  • El espacio de nombres de tema no es válido: la aplicación especifica un espacio de nombres de tema que no está configurado, pero el administrador ha especificado en el servicio WS-Notification que no está permitido utilizar espacios de nombres dinámicos.
  • El tema no está soportado: el tema especificado no está permitido por un documento de espacio de nombres de tema que se ha aplicado al espacio de nombres del tema (por ejemplo, es un subtema de un tema que se ha marcado como "final").
  • Las credenciales no son válidas: el ID de usuario o contraseña especificado no es válido o no tiene la autorización necesaria. Esto es debido a una discrepancia entre la configuración de la aplicación y las políticas de seguridad del servidor.
  • El editor no está registrado: la aplicación intenta enviar una notificación sin registrarse primero con el intermediario, pero el administrador ha configurado el servicio WS-Notification para que sea necesario el registro de aplicaciones. Esto es provocado por un error de aplicación, una aplicación que se comporta correctamente debería comprobar, en primer lugar, si es necesario o no registrarse antes de publicar en un intermediario.
  • El espacio de temas del bus de integración de servicios asociado ha sido inhabilitado.

Debe supervisar este tipo de excepción detalladamente, porque podría indicar un ataque de denegación de servicio y, sin lugar a dudas, indica que la aplicación no funciona correctamente. La primera vez que falla una notificación de entrada de una aplicación concreta de producción, se envía un mensaje de aviso a la anotación cronológica SystemOut del servidor. Si existen más errores de notificación para dicho generador, los mensajes siguientes de aviso de tiempo de espera excedido se anotan a intervalos de 30 minutos. Se proporciona información adicional con cada mensajes de tiempo de espera excedido para indicar cómo se recibieron muchas notificaciones con errores para dicho generador durante el intervalo de 30 minutos.

Cuando el sistema genera cada uno de los mensajes de aviso, identifica la aplicación generadora mediante uno de dos identificadores:
  • El elemento ProducerReference de NotifyMessage proporcionado en la operación de notificación. Este elemento identifica de forma exclusiva la aplicación. Sin embargo, este elemento es opcional.
  • La dirección IP del host que originó la solicitud. Esta dirección podría no identificar de forma exclusiva la aplicación, pero estrechar la búsqueda.
Nota: El sistema no puede identificar la dirección IP del host en todos los casos. Por ejemplo, para SOAP en transportes de JMS, la dirección IP del host originador no está disponible ni aplicable.

Una notificación de salida (de intermediario a aplicación) no es correcta

Una invocación del servicio web de salida (de intermediario a aplicación) no se ejecuta correctamente cuando una aplicación remota no está disponible para invocación. Esto puede ser el resultado de un error de la aplicación, de un error de red o de un problema de configuración de cortafuegos. Cuando no se pasan las notificaciones de sucesos a las aplicaciones suscritas, los mensajes se acumulan en las suscripciones que se conservan en el servidor. Los mensajes conservados en una suscripción determinada se pueden observar utilizando los panales de tiempo de ejecución, tal como se describe en Enumeración o supresión de suscripciones WS-Notification activas. Las suscripciones para las cuales la notificación de suceso más reciente ha fallado de este modo se marcan con el estado de ERROR, cuando se visualizan en el panel de administración de tiempo de ejecución de suscripción de WS-Notification.

Si el punto de servicio WS-Notification no puede notificar correctamente una aplicación NotificationConsumer, se envía un mensaje de aviso al archivo de registro SystemOut del servidor de aplicaciones y se indica a la suscripción que debe esperar 2 minutos. Los motivos para una anomalía de este tipo podrían ser que el servicio web remoto no está disponible en ese momento, o que las condiciones de red impiden el contacto entre el servidor local y el servicio.

Después de 2 minutos, se vuelve a intentar realizar la notificación. Si la entrega sigue sin ser posible, la suscripción vuelve a establecerse en estado de espera de otros 2 minutos más. Si la anomalía es debida a un error de E/S pasajero, este patrón se repite de forma indefinida, hasta que la notificación o se entrega correctamente o bien el usuario suprime la suscripción. Si el error es provocado por una anomalía de aplicación en el sistema remoto, en ese caso, se intentará entregar la notificación tantas veces como esté definido en el valor "Entregas máximas con error" del destino del espacio de temas del bus de integración de servicios desde el cual se recibe el mensaje. Tras haber enviado el primer mensaje de aviso a la anotación cronológica SystemOut, los mensajes siguientes de aviso de tiempo de espera excedido se anotan a intervalos de 30 minutos.

Borrado de los recursos con estado que no se suprimen automáticamente

El hecho de suscribirse al intermediario o registrar un editor crea un recurso con estado en el servidor que consume los recursos del sistema mientras está activo. Generalmente, una aplicación especifica una fecha de finalización como parte del proceso de creación de estos recursos y, por lo tanto, se suprimen automáticamente cuando se alcanza esta fecha. Sin embargo, también es posible para la aplicación solicitar un tiempo de vida infinito para el recurso. Si se realiza esta acción, es posible que los recursos permanezcan en el servidor de forma indefinida, aunque la aplicación no vuelva a usarse para utilizar el recurso (o se destruya).

Puede ver los recursos con estado (suscripciones y registros de editor) que utilizan los paneles de tiempo de ejecución descritos en Interactividad en tiempo de ejecución con WS-Notification. Estos paneles también proporcionan la capacidad de suprimir de forma administrativa los elementos, si es necesario. Realice esta acción sólo si está seguro de que la aplicación ya no utiliza el recurso, porque generará anomalías de aplicación, si se hace referencia al recurso después de haberlo suprimido.

Una suscripción duradera creada por WS-Notification no se puede suprimir cuando se utiliza el panel del bus de integración de servicios

Cuando crea una suscripción utilizando la aplicación WS-Notification, es decir utilizando la operación de suscripción, se crean una o más suscripciones duraderas en el destino aplicable del espacio de temas del bus de integración de servicios. Puede ver estas suscripciones duraderas en los paneles de tiempo de ejecución del bus de integración de servicios para el punto de publicación.

Los paneles de tiempo de ejecución correspondientes al punto de publicación también proporcionan la capacidad de suprimir una o más suscripciones duraderas. No obstante, si utiliza esta función para suprimir una suscripción creada por una aplicación WS-Notification, la operación de supresión falla. Esto es debido a que la implementación WS-Notification mantiene un consumidor activo para esta suscripción duradera durante el periodo de tiempo en que se ejecuta el servidor, y una suscripción duradera no se puede suprimir si hay un consumidor presente.
Nota: Esta limitación de supresión también se aplica a suscripciones duraderas creadas por otras aplicaciones como, por ejemplo, aplicaciones de JMS.

Para suprimir una suscripción que fue creada por una aplicación de WS-Notification, utilice los paneles de tiempo de ejecución proporcionados por la implementación de WS-Notification, tal como se describe en Interactividad en tiempo de ejecución con WS-Notification. Este enfoque cierra el consumidor activo y suprime automáticamente las suscripciones duraderas del bus de integración de servicios relacionado.

Parada administrativa de un motor de mensajería

WebSphere Application Server depende del hecho de ser capaz de acceder a un motor de mensajería de bus de integración de servicios en ejecución para enviar y recibir mensajes y para crear y recuperar estados para distintos recursos de servicio web que se hayan creado.

Puede detener un motor de mensajería utilizando la interfaz MBean o los paneles de tiempo de ejecución. Así se impide que WS-Notification preste servicios correctamente a cualquier solicitud de aplicaciones que pudieran llegar durante el periodo de tiempo en el cual está detenido el motor de mensajería. En esta situación, los mensajes de error se registran tal como se describe en Una notificación de entrada (de aplicación a intermediario) no es correcta y Una notificación de salida (de intermediario a aplicación) no es correcta. Si detiene un motor de mensajería, se detienen todos los procesos WS-Notification y dejan de funcionar todas las aplicaciones de mensajería. Cuando reinicie el motor de mensajería, se reanuda el proceso WS-Notification.

Anomalías como resultado de los cambios realizados en un espacio de temas o la configuración de un espacio de nombres de tema

A menudo, los artefactos de la configuración de WS-Notification dependen de los objetos definidos en otras áreas de la configuración del servidor. Por ejemplo, (para los servicios WS-Notification versión 6.1), los escuchas de punto final, desde donde se reciben las solicitudes de aplicación, y los espacios de temas del bus de integración de servicios desde donde se envían y reciben mensajes.

Los elementos siguientes describen la acción que lleva a cabo el código de tiempo de ejecución de WS-Notification cuando detecta cambios relevantes en los objetos en los que depende.

Supresión de un espacio de temas del bus de integración de servicios

El espacio de temas del bus de integración de servicios es el objeto de mensajería principal del que depende WS_Notification durante el tiempo de ejecución. Los mensajes de notificación de una aplicación se publican en el espacio de temas especificado por la correlación del espacio de nombres de tema (permanente) especificada por el administrador.

Suprimir un espacio de temas del bus de integración de servicios tiene los siguientes efectos en las aplicaciones WS-Notification, tanto nuevas como existentes:
  • Las solicitudes RegisterPublisher que utilizan un espacio de nombres de tema WS-Notification que hace referencia al espacio de temas suprimido reciben un mensaje de error TopicNotSupportedFault.
  • Las solicitudes de notificación para un tema asociado con el espacio de temas suprimido no publican el mensaje en el espacio de temas (porque se ha suprimido). No se informa a la aplicación porque la operación de notificación no lanza errores (consulte Una notificación de entrada (de aplicación a intermediario) no es correcta).
  • Las solicitudes de suscripción que utilizan un espacio de nombres de tema WS-Notification que hace referencia al espacio de temas suprimido reciben un mensaje de error SubscribeCreateFailedFault.
  • No se entregan más mensajes a las aplicaciones que tienen suscripciones existentes asociadas al espacio de temas suprimido. Se ha suprimido la suscripción existente y, por lo tanto, cualquier intento para invocar operaciones en la suscripción (por ejemplo, getCreationTime) genera un mensaje de error ResourceUnknownFault.
  • Suprimir y recrear un espacio de temas del bus de integración de servicios se considera como dos pasos separados. Las suscripciones existentes se suprimen como respuesta del primer paso y, por lo tanto, no existen cuando se recrea el espacio de temas.
Cómo suprimir una correlación de espacios de nombres de tema permanentes

Suprimir la correlación de espacios de nombres de tema que se utilizó para establecer una suscripción (activa actualmente) tiene el mismo efecto que suprimir el espacio de temas del bus de integración de servicios subyacente, tal como se ha definido previamente, y las suscripciones que se crearon utilizando esta correlación de espacios de nombres se suprimen.

También se suprimen los registros de editor y los puntos de extracción con la correlación de espacios de nombres de tema suprimida.

Cómo modificar una correlación de espacios de nombres de tema permanente

Los campos de una correlación de espacios de nombres de tema permanente son campos de sólo lectura, por lo tanto, la única forma de "modificar" los campos es suprimir la correlación de espacios de nombres y recrearla con los nuevos valores. Las consecuencias de suprimir una correlación de espacios de nombres de tema permanente se describen en el punto anterior.

No puede crear un servicio WS-Notification versión 6.1 sin un repositorio de SDO configurado

Cuando crea un servicio WS-Notification versión 6.1, los documentos WSDL se guardan en el repositorio SDO. Verá el mensaje de excepción siguiente, si intenta crear un servicio WS-Notification versión 6.1 con la consola administrativa, o mediante scripts, antes de configurar correctamente el repositorio SDO.
java.lang.Exception:  com.ibm.ws.sib.webservices.admin.config.SIBConfigException: CWSWS5010E: No se ha podido 
almacenar WSDL que se encuentra en http://www.ibm.com/websphere/wsn/notification-broker debido a la 
excepción siguiente:
    com.ibm.ws.sib.webservices.exception.SIBWSUnloggedException: CWSWS1007E: Se ha producido la excepción 
        siguiente: com.ibm.ws.sdo.config.repository.impl.RepositoryRuntimeException: 
        javax.transaction.TransactionRolledbackException: CORBA TRANSACTION_ROLLEDBACK 0x0 No; la excepción 
        anidada es: org.omg.CORBA.TRANSACTION_ROLLEDBACK: 
        javax.transaction.TransactionRolledbackException: ;
    nested exception is: javax.ejb.TransactionRolledbackLocalException: ;
    nested exception is: com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException: PMGR1014E: 
        Se ha producido una excepción al obtener la fábrica de conexiones: 
        com.ibm.websphere.naming.CannotInstantiateObjectException: se ha lanzado NameNotFoundException mientras 
        JNDI NamingManager estaba procesando un objeto javax.naming.Reference.
    [Root exception is javax.naming.NameNotFoundException: Context: 
        KADGINNode01Cell/nodes/KADGINNode01/servers/server1, name: 
        jdbc/com.ibm.ws.sdo.config/SdoRepository: First component in name 
        com.ibm.ws.sdo.config/SdoRepository.
    [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: 
        IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]] vmcid: 0x0 minor code: 0 completed: No.
Si desea más información sobre cómo configurar el repositorio SDO, consulte Instalación y configuración del repositorio de SDO.

Se produce una excepción cuando un cliente JAX-WS que no tenga acceso a Internet intenta contactar con un servicio WS-Notification

La aplicación cliente normalmente resuelve las partes WSDL para el servicio siguiendo los enlaces web. Si la máquina en la que se ejecuta el cliente no tiene acceso a Internet, se produce una excepción similar a la del ejemplo siguiente:
WSDLException (at /definitions/import[1]): faultCode=OTHER_ERROR:
No se ha podido resolver el documento importado en 'http://docs.oasis-open.org/wsn/brw-2.wsdl',
relativo a 'http://localhost:9082/WSNService1WSNServicePt1NB/Service/WEB-INF/wsdl
/NotificationBroker.wsdl': java.net.UnknownHostException: docs.oasis-open.org

Configure el cliente para que, en su lugar, utilice una copia local del archivo WSDL, siguiendo las instrucciones de tema Configuración de un cliente JAX-WS para resolver un WSDL de servicio WS-Notification sin seguir enlaces web.


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=rjwsn_prob0
File name: rjwsn_prob0.html