Conseils d'identification et de résolution des incidents liés à la passerelle de services Web
Reportez-vous à ces conseils pour résoudre les problèmes rencontrés lors de l'utilisation de la passerelle des services Web.
Pour faciliter l'identification et la résolution des problèmes liés aux passerelles des services Web,
utilisez les fonctions de trace et de consignation de WebSphere
Application Server, comme indiqué dans Configuration du service de trace des composants (CTRACE).
Pour activer la trace pour la passerelle, attribuez la valeur com.ibm.ws.sib.webservices.*=all=enabled:com.ibm.ws.wsgw.*=all=enabled à la chaîne de trace du serveur d'applications. Si vous rencontrez un incident qui semble être lié à la passerelle, vous pouvez vérifier si la console d'administration de WebSphere Application Server et le fichier SystemOut.log du serveur d'applications contiennent des messages d'erreur. Vous pouvez également activer la trace de débogage du serveur d'applications pour fournir un vidage détaillé des exceptions.
La passerelle des services Web est implémentée comme une couche administrative sur les services Web activés par un bus d'intégration de services. Par conséquent, la plupart des incidents recensés que vous pouvez rencontrer lors de l'utilisation de la passerelle sont en fait des incidents liés aux services Web activés par un bus, documentés dans Conseils relatifs à l'identification et la résolution des incidents liés aux services Web activés par un bus.
Les messages système WebSphere Application Server sont journalisés à partir de nombreuses sources, y compris les applications et composants de serveur d'applications. Chaque message consigné par les composants du serveur d'applications et les produits IBM associés commence par un identificateur unique qui indique quel composant ou application a émis le message. Le préfixe du composant de la passerelle des services Web est CWWSG et celui du composant des services Web activés par un bus est CWSWS.
La rubrique Référence du programme d'identification des incidents : Messages contient des informations sur les messages de passerelle et des services Web activés avec un bus, indexés en fonction de leurs préfixes. Chaque message est associé à une explication de l'incident et aux détails de l'action que vous pouvez effectuer pour résoudre l'incident.
- Lors de la transmission directe des messages à une destination de bus, l'interaction du message de tableau de chaînes RPC des services Web avec certains fournisseurs de services cibles échoue.
- Un message de service Web SOAP sur JMS est émis par la passerelle des services Web sous la forme JmsBytesMessage et non pas JmsTextMessage.
- Lors de la création d'un service de passerelle, la description WSDL n'est pas créée dans le référentiel SDO tant que vous n'accédez pas au fichier WSDL du service de passerelle via un navigateur Web.
- Migration d'une passerelle de WebSphere Application Server version 5.1 vers une version ultérieure
- Génération d'un client de services Web à partir du document WSDL du service cible et non pas du service de passerelle
- Migration d'une passerelle qui contient des filtres de WebSphere Application Server version 5.1 vers une version ultérieure et les filtres ne fonctionnent plus.
- Suite à la migration d'une passerelle qui contient des filtres de WebSphere Application Server version 5.1 vers la version 7.0 ou version ultérieure, des destinations dont le nom se termine par StorageQueue ont été créées.
- L'application client fonctionne sous WebSphere Application Server Version 5.1, mais des problèmes sont générés par des demandes ou des réponses de format erroné dans les versions suivantes.
- Un client JAX-RPC en cours d'exécution sur WebSphere Application Server version 5.1 utilise SOAP sur JMS pour appeler un service Web en cours d'exécution sur un serveur d'applications version 5.1
- Les panneaux de passerelle dans la console d'administration ne sont disponibles dans WebSphere Application Server Network Deployment.
Lors de la transmission directe des messages à une destination de bus, l'interaction du message de tableau de chaînes RPC des services Web avec certains fournisseurs de services cibles échoue.
- Le message au format tableau de type "chaîne de caractères" par défaut des services Web codés par RPC généré risque de ne pas interagir correctement avec certains fournisseurs de services cible.
- Le message au format tableau de type "chaîne de caractères" généré n'est pas exactement identique à l'équivalent JAX-RPC standard, qui peut interagir correctement.
- Message du bus d'intégration de services :
<partname env:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/ xsi:type='ns1:ArrayOf_xsd_string'> <item xsi:type='xsd:anySimpleType'>namevalue</item> </partname>
- Message du client JAX-RPC :
<partname xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]"> <item>namevalue</item> </partname>
- Démarrez la console d'administration.
- Accédez à , puis cliquez sur Nouveau.
- Créez la propriété JVM personnalisée suivante. Nota : les majuscules et minuscules doivent être respectées dans les valeurs indiquées.
- Nom : com.ibm.websphere.sib.webservices.useTypeSoapArray
- Valeur : true
- Redémarrez le serveur d'applications.
Un message de service Web SOAP sur JMS est émis par la passerelle des services Web sous la forme JmsBytesMessage et non pas JmsTextMessage.
Par défaut, dans WebSphere Application Server Version 6 et les versions suivantes, un message de service Web SOAP sur JMS est envoyé par la passerelle des services Web en tant que message de type JmsBytesMessage, alors que dans WebSphere Application Server Version 5.1, la passerelle des services Web envoie un message de type JmsTextMessage.
- Démarrez la console d'administration.
- Accédez à , puis cliquez sur Nouveau.
- Créez la propriété JVM personnalisée suivante. Nota : les majuscules et minuscules doivent être respectées dans les valeurs indiquées.
- Nom : com.ibm.ws.sib.webservices.useSOAPJMSTextMessages
- Valeur : true
- Redémarrez le serveur d'applications.
Lors de la création d'un service de passerelle, la description WSDL n'est pas créée dans le référentiel SDO tant que vous n'accédez pas au fichier WSDL du service de passerelle via un navigateur Web.
Chaque service passerelle possède un service entrant associé. Le fichier WSDL du service passerelle est associé à ce service entrant et doit uniquement être utilisé si le message provient d'un service entrant. Par conséquent, la description WSDL est créée dans le référentiel SDO la première fois qu'elle est appelée par un service entrant ou via un navigateur Web.
Si vos applications envoient des messages dans le bus à partir de sources autres que le service entrant (par exemple, si vous utilisez des gestionnaires de médiation pour manipuler des messages SDO vers ou depuis un service passerelle), les applications doivent utiliser le fichier WSDL associé au service (sortant) cible ou un autre fichier WSDL compatible.
Migration d'une passerelle de WebSphere Application Server version 5.1 vers une version ultérieure
Quand la passerelle de version 5 génère du WSDL pour un service passerelle, l'espace de nom généré contient le nom du service. Par exemple : namespace="http://griddev:9080/wsgw#yourService". Toutefois, dans les versions ultérieures, le WSDL généré pour un service de passerelle ne contient pas le nom de service. Par exemple : namespace="http://griddev:9080/wsgw".
Si votre style de liaison et de codage WSDL est un style littéral document, vos clients utilisent toujours la passerelle migrée, car le style littéral document n'utilise pas l'attribut namespace. Toutefois, si vous utilisez le document WSDL du service de passerelle Version 5.1 pour générer les clients de service Web et que le type de liaison et de codage WSDL n'est pas un document/littéral, après la migration, vous devez régénérer les modules de remplacement client en utilisant le nouveau document WSDL du service de passerelle.
Génération d'un client de services Web à partir du document WSDL du service cible et non pas du service de passerelle
La génération d'un client de service Web à partir du document WSDL du service cible offre l'avantage d'accéder au service cible directement ou via la passerelle en changeant uniquement l'URL dans les modules de remplacement générés. Vous pouvez définir cette approche dans cette version de passerelle en utilisant la console d'administration pour indiquer la valeur false pour la propriété de personnalisation com.ibm.websphere.wsgw.mapSoapBodyNamespace sur chaque service entrant associé au service de passerelle.
- Si vous souhaitez conserver la flexibilité pour rediriger vos messages en modifiant l'URL dans les modules de remplacements générés, indiquez la valeur false dans la propriété de personnalisation com.ibm.websphere.wsgw.mapSoapBodyNamespace.
- Si vous n'avez plus besoin de cette flexibilité, vous pouvez générer de nouveau les modules de remplacement client à l'aide du document WSDL du service de passerelle de la version ultérieure.
Migration d'une passerelle qui contient des filtres de WebSphere Application Server version 5.1 vers une version ultérieure et les filtres ne fonctionnent plus.
L'utilisation de filtres était déconseillée dans Version 5.1.1. Leur prise en charge a été supprimée dans la version 7.0. Le rôle anciennement joué par les filtres est désormais pris en charge par une combinaison de gestionnaires JAX-RPC et de médiations de bus d'intégration de services. Si vous migrez une passerelle de services Web comprenant un filtre de routage, vous pouvez recréer les fonctions de filtre.
Suite à la migration d'une passerelle qui contient des filtres de WebSphere Application Server version 5.1 vers la version 7.0 ou version ultérieure, des destinations dont le nom se termine par StorageQueue ont été créées.
Ces destinations supplémentaires étaient requises pour prendre en charge les filtres de passerelle Version 5.1 existants dans l'environnement Version 6. Les filtres de passerelle ne sont plus pris en charge. Ces destinations "StorageQueue" ne sont plus utilisées dans la Version 7.0 ou ultérieures. Toutefois, elles ne sont pas supprimées automatiquement lorsque vous effectuez une migration vers la Version 7.0 ou ultérieures ou que vous supprimez l'instance de passerelle.
- Si vous avez spécifié le paramètre -Q (nom de la file d'attente de corrélation de filtre partagée), une destination de file d'attente portant le nom spécifié a été créée (si elle n'existait pas déjà) et partagée par tous les services de passerelle qui ont des filtres associés.
- Si vous n'avez pas indiqué le paramètre -Q, une destination de file d'attente séparée a été créée pour chaque service de passerelle ayant des filtres associés. Chacune de ces destinations a un nom dérivé du nom des destinations de réponse et de demande du service de passerelle correspondantes et se terminant par StorageQueue.
Une fois que vous avez supprimé l'instance de passerelle, identifiez chaque destination de file d'attente de stockage en fonction de son nom, et supprimez-la comme il est décrit dans la rubrique relative à la suppression d'une destination de bus d'espace qui n'est pas un espace de sujet.
L'application client fonctionne sous WebSphere Application Server Version 5.1, mais des problèmes sont générés par des demandes ou des réponses de format erroné dans les versions suivantes.
Les services Web activés par un bus vérifient plus en détail la validité des messages des services Web que dans WebSphere Application Server Version 5.1. Suite à ces opérations, certaines applications client qui utilisent des demandes ou des réponses dont la syntaxe est incorrecte (où les noms des parties de message sont incorrects) et qui fonctionnent avec Version 5.1 sont identifiées comme ayant une syntaxe incorrecte dans les versions ultérieures. Pour connaître les étapes à suivre pour résoudre l'incident, voir Tolérance des messages SOAP dont la syntaxe est incorrecte.
Un client JAX-RPC en cours d'exécution sur WebSphere Application Server version 5.1 utilise SOAP sur JMS pour appeler un service Web en cours d'exécution sur un serveur d'applications version 5.1
Un client JAX-RPC en cours d'exécution sur WebSphere Application Server version 5.1 utilise SOAP sur JMS pour appeler un service Web en cours d'exécution sur un serveur d'applications version 5.1. Aucun ID utilisateur ou mot de passe n'est requis sur la file d'attente MQ Series cible. Une fois le serveur d'applications migré vers une version ultérieure et lorsque vous utilisez la messagerie par défaut, les demandes client n'aboutissent pas car l'authentification de base est activée.
SibMessage W [:] CWSIT0009W: A client request failed in the application
server with endpoint <endpoint_name> in bus your_bus with reason:
CWSIT0016E: The user ID null failed authentication in bus your_bus.
Pour connaître la procédure à suivre pour résoudre l'incident, voir le conseil de résolution des incidents pour les technologies d'intégration de services suivant : Migration d'un serveur d'applications Version 5.1 vers WebSphere Application Server Version 7.0 ou ultérieures
Les panneaux de passerelle dans la console d'administration ne sont disponibles dans WebSphere Application Server Network Deployment.
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
![[IBM i]](../images/iseries.gif)
- Avec 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" )
- A l'aide de 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"