Consejos para la resolución de problemas de Web Services Gateway
Utilice este conjunto de sugerencias específicas para ayudarle a resolver los problemas que experimente al utilizar la pasarela de servicios web.
Para ayudarle a identificar y resolver los problemas relacionados con la pasarela de servicios web, 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 la pasarela, establezca la serie de rastreo del servidor de aplicaciones en com.ibm.ws.sib.webservices.*=all=enabled:com.ibm.ws.wsgw.*=all=enabled. Si detecta un problema que considera que podría estar relacionado con la pasarela, 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 proporcionar un vuelco de excepciones detallado.
La pasarela de servicios web se implementa como una capa administrativa encima de los servicios web habilitados para el bus de integración de servicios. Por lo tanto, la mayoría de los problemas conocidos que podría experimentar al utilizar la pasarela son problemas relacionados realmente con los servicios web habilitados para el bus y se documentan en Sugerencias de resolución de problemas de servicios web habilitados para bus.
Los mensajes del sistema WebSphere Application Server se registran desde diferentes fuentes, incluidos los componentes y aplicaciones del servidor de aplicaciones. Los mensajes registrados 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 para el componente de la pasarela de servicio web es CWWSG y el prefijo para el componente de servicios web habilitados para el bus es CWSWS.
El tema Referencia de resolución de problemas: mensajes contiene información sobre los mensajes de servicios web habilitados para bus y pasarela, indexados por un prefijo de mensaje. Para cada mensaje se incluye una descripción del problema e información detallada acerca de las acciones que pueda realizar para solucionar el problema.
- Al pasar los mensajes directamente a un destino de bus, el mensaje predeterminado de matriz de series de servicios web con codificación RPC no interactúa correctamente con algunos proveedores de servicios de destino.
- La pasarela de servicios web envía un mensaje de servicio web SOAP sobre JMS como un JmsBytesMessage, en lugar de JmsTextMessage
- Al crear un servicio de pasarela, su descripción WSDL no se crea en el repositorio SDO hasta que intente acceder al archivo WSDL de servicio de pasarela a través de un navegador web
- Migración de una pasarela de WebSphere Application Server Version 5.1 una versión posterior
- Generación de un cliente de servicio web desde el WSDL para el servicio de destino, en lugar del servicio de pasarela
- Migración de una pasarela que contiene filtros de WebSphere Application Server Versión 5.1 a una versión posterior y los filtros ya no funcionarán
- Al migrar una pasarela que contiene filtros de WebSphere Application Server Versión 5.1 a la Versión 7.0 o posterior, se han creado destinos con nombres que acaban en StorageQueue
- Aplicación cliente que funciona con WebSphere Application Server Versión 5.1, pero obtendrá problemas provocados por solicitudes o respuestas defectuosas en versiones posteriores
- Un cliente JAX-RPC que se ejecuta en WebSphere Application Server versión 5.1 utiliza SOAP a través de JMS para invocar un servicio web que se ejecuta en un servidor de aplicaciones de la versión 5.1
- Los paneles de pasarela de la consola administrativa sólo están disponibles en WebSphere Application Server Network Deployment
Al pasar los mensajes directamente a un destino de bus, el mensaje predeterminado de matriz de series de servicios web con codificación RPC no interactúa correctamente con algunos proveedores de servicios de destino.
- Es posible que el mensaje de matriz de series de servicios web codificado por RPC de forma predeterminada que se ha generado no funcione correctamente con algunos proveedores de servicios de destino.
- El mensaje de matriz de series generado no es exactamente el mismo que el equivalente JAX-RPC estándar, que puede interoperar satisfactoriamente.
- Mensaje del bus de integración de servicios:
<partname env:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/ xsi:type='ns1:ArrayOf_xsd_string'> <item xsi:type='xsd:anySimpleType'>namevalue</item> </partname>
- Mensaje del cliente JAX-RPC:
<partname xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]"> <item>namevalue</item> </partname>
- Inicie la consola administrativa.
- Vaya a , a continuación, pulse Nuevo.
- Cree la siguiente propiedad personalizada de la JVM. Tenga en cuenta que los valores son sensibles a las mayúsculas y minúsculas.
- Nombre: com.ibm.websphere.sib.webservices.useTypeSoapArray
- Valor: true
- Reinicie el servidor de aplicaciones.
La pasarela de servicios web envía un mensaje de servicio web SOAP sobre JMS como un JmsBytesMessage, en lugar de JmsTextMessage
De forma predeterminada en WebSphere Application Server Versión 6 o posterior, un mensaje de servicio web SOAP sobre JMS es enviado por la pasarela de servicios web como un JmsBytesMessage, mientras que en WebSphere Application Server Versión 5.1 la pasarela de servicios web envía un JmsTextMessage.
- Inicie la consola administrativa.
- Vaya a , a continuación, pulse Nuevo.
- Cree la siguiente propiedad personalizada de la JVM. Tenga en cuenta que los valores son sensibles a las mayúsculas y minúsculas.
- Nombre: com.ibm.ws.sib.webservices.useSOAPJMSTextMessages
- Valor: true
- Reinicie el servidor de aplicaciones.
Al crear un servicio de pasarela, su descripción WSDL no se crea en el repositorio SDO hasta que intente acceder al archivo WSDL de servicio de pasarela a través de un navegador web
Cada uno de los servicios Gateway tiene un servicio de entrada asociado. El archivo WSDL del servicio Gateway está asociado con este servicio de entrada y sólo debería ser necesario si el mensaje se origina desde un servicio de entrada. Por lo tanto, la descripción WSDL se crea en el repositorio SDO la primera vez que es llamado por un servicio de entrada o a través de un navegador web.
Si las aplicaciones publican mensajes en el bus desde orígenes distintos del servicio de entrada (por ejemplo, si utiliza manejadores de mediación para manipular mensajes SDO hacia o desde un servicio Gateway), las aplicaciones deben utilizar el WSDL asociado con el servicio de destino (de salida) o un WSDL compatible.
Migración de una pasarela de WebSphere Application Server Version 5.1 una versión posterior
Cuando la pasarela de la versión 5 genera un WSDL para un servicio Gateway, el espacio de nombres generado contiene el nombre de servicio. Por ejemplo: namespace="http://griddev:9080/wsgw#yourService". Sin embargo, en versiones anteriores el WSDL generado para un servicio de pasarela no contiene el nombre del servicio. Por ejemplo: namespace="http://griddev:9080/wsgw".
Si su enlace WSDL y el estilo de codificación es documento literal, sus clientes todavía trabajan con la pasarela migrada, ya que el estilo de documento literal no utiliza el atributo namespace. Sin embargo, si ha utilizado el WSDL del servicio de pasarela de Versión 5.1 para generar los clientes de servicio web y el enlace WSDL y el estilo de codificación no es un literal de documento, después de la migración, debe regenerar los apéndices de cliente utilizando el nuevo WSDL del servicio de pasarela.
Generación de un cliente de servicio web desde el WSDL para el servicio de destino, en lugar del servicio de pasarela
La ventaja de elegir generar un cliente de servicio web desde el WSDL para el servicio de destino es que puede elegir entre ir al servicio de destino directamente o ir a través de la pasarela al servicio de destino simplemente cambiando el URL en los apéndices generados. Para permitir este enfoque en esta versión de la pasarela, utilice la consola administrativa para establecer la propiedad personalizada com.ibm.websphere.wsgw.mapSoapBodyNamespace en false en cada servicio de entrada asociado a un servicio Gateway.
- Si desea retener la flexibilidad de redireccionar sus mensajes cambiando el URL en los apéndices generados, establezca la propiedad personalizada com.ibm.websphere.wsgw.mapSoapBodyNamespace en false.
- Si ya no necesita esta flexibilidad, vuelva a generar los apéndices de cliente utilizando el WSDL del servicio de pasarela de la versión posterior.
Migración de una pasarela que contiene filtros de WebSphere Application Server Versión 5.1 a una versión posterior y los filtros ya no funcionarán
El uso de filtros está en desuso en Versión 5.1.1 y el soporte de los filtros se eliminó en la versión 7. El rol desempeñado anteriormente por los filtros lo lleva a cabo ahora una combinación de manejadores JAX-RPC y mediaciones de bus de integración de servicios. Si migra una pasarela de servicios web que incluye un filtro de direccionamiento, puede volver a crear las funciones de filtro.
Al migrar una pasarela que contiene filtros de WebSphere Application Server Versión 5.1 a la Versión 7.0 o posterior, se han creado destinos con nombres que acaban en StorageQueue
Estos destinos adicionales eran necesarios para dar soporte a los filtros de pasarela de Versión 5.1 de legado en el entorno Versión 6. Los filtros de pasarela ya no están soportados y, por lo tanto, estos destinos "StorageQueue" ya no son necesarios en Versión 7.0 o posterior. Sin embargo, no se eliminan automáticamente cuando migra a Versión 7.0 o posterior o suprime la instancia de pasarela.
- Si ha especificado el parámetro -Q (nombre de cola de correlación de filtros compartidos), se ha creado un único destino de cola con el nombre especificado (si todavía no existía) que comparten todos los servicios Gateway que tuvieran filtros asociados.
- Si no ha especificado el parámetro -Q, se ha creado un destino de cola distinto para cada servicio Gateway que tuviera filtros asociados. Cada uno de estos destinos tiene un nombre derivado del nombre de los destinos de solicitud y respuesta de servicio Gateway correspondiente y acaban en StorageQueue.
Después de suprimir la instancia de pasarela, identifique cada destino de cola de almacenamiento asociado por su nombre y suprímalo tal como se describe en Supresión de un destino de bus que no es de espacio de temas .
Aplicación cliente que funciona con WebSphere Application Server Versión 5.1, pero obtendrá problemas provocados por solicitudes o respuestas defectuosas en versiones posteriores
Los servicios web habilitados para bus comprueban la validez de los mensajes de servicios web de una forma más detallada que en WebSphere Application Server Versión 5.1. Como resultado, algunas aplicaciones cliente que utilizan solicitudes o respuestas con formato defectuoso (donde las partes del mensaje reciben nombres erróneos), y que funcionan cuando se utiliza Versión 5.1, se identifican como mensajes de formato defectuoso en versiones posteriores. Para ver los pasos que deben seguirse para resolver el problema, consulte Tolerancia de mensajes SOAP de formato defectuoso
Un cliente JAX-RPC que se ejecuta en WebSphere Application Server versión 5.1 utiliza SOAP a través de JMS para invocar un servicio web que se ejecuta en un servidor de aplicaciones de la versión 5.1
Un cliente JAX-RPC que se ejecuta en WebSphere Application Server versión 5.1 utiliza SOAP a través de JMS para invocar un servicio web que se ejecuta en un servidor de aplicaciones de la versión 5.1. No se necesita ningún ID de usuario o contraseña en la cola de destino de MQ Series. Después de que el servidor de aplicaciones se migre en una versión posterior y para utilizar la mensajería predeterminada las solicitudes de cliente fallan porque ahora está habilitada la autenticación básica.
SibMessage W [:] CWSIT0009W: Una solicitud de cliente ha fallado en el servidor de aplicaciones
con el punto final <nombre_puntofinal> en el bus bus_usuario con la razón:
CWSIT0016E: El ID de usuario nulo no ha podido autenticarse en el bus bus_usuario.
Para ver los pasos que deben seguirse para resolver el problema, consulte el siguiente consejo de resolución de problemas de tecnologías de integración de servicios: Migración de un servidor de aplicaciones Versión 5.1 a WebSphere Application Server Versión 7.0 o posterior
Los paneles de pasarela de la consola administrativa sólo están disponibles en WebSphere Application Server Network Deployment
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
- Utilizando Jython:
wsgwAttribs = [] wsgwAttribs.append(["name", wsgwName]) wsgwAttribs.append(["wsdlServiceNamespace", wsgwNamespace]) wsgw = AdminConfig.create("WSGWInstance", bus, wsgwAttribs ) wsgwWsdlAttribs = [] wsgwWsdlAttribs.append(["WSDLLocation", wsgwWsdlLocation]) AdminConfig.create("SIBWSWSDLLocation", wsgw, wsgwWsdlAttribs, "defaultProxyWSDLLocation" )
- Utilizando Jacl:
set wsgwAttribs {} lappend wsgwAttribs [list "name" $wsgwName] lappend wsgwAttribs [list "wsdlServiceNamespace" $wsgwNamespace] set wsgw [$AdminConfig create "WSGWInstance" $bus $wsgwAttribs] set wsgwWsdlAttribs {} lappend wsgwWsdlAttribs [list "WSDLLocation" $wsgwWsdlLocation] $AdminConfig create "SIBWSWSDLLocation" $wsgw $wsgwWsdlAttribs "defaultProxyWSDLLocation"