Meilleures méthodes pour obtenir les meilleures performances des services Web

Cette rubrique présente les meilleures méthodes pour optimiser les performances des applications de services Web.

Le développement et le déploiement des services Web s'appuient sur les normes fournies par la spécification Web Services for Java™ EE (Java Platform, Enterprise Edition) et les modèles de programmation JAX-WS (Java API for XML-Based Web Services) et JAXB (Java Architecture for XML Binding). Les services web correspondent au mécanisme permettant d'accéder à un service Web. Les points concernant les performances à prendre en compte pour les services Web pris en charge par cette spécification sont expliqués.

Lorsque vous développez ou déployez un service Web, plusieurs artefacts sont nécessaires, parmi lesquels un fichier WSDL (Web Services Description Language). Le fichier WSDL décrit le format et la syntaxe des messages SOAP d'entrée et de sortie du service Web. Lorsqu'un service web est implémenté dans l'environnement d'exécution de WebSphere Application Server, toute demande reçue sous forme de message SOAP est traduite en demande Java EE. La réponse Java EE est ensuite traduite en message SOAP.

La traduction entre le message SOAP à base de code XML et l'objet Java est un facteur de performances particulièrement critique. L'implémentation d'un service Web dans WebSphere Application Server, est particulièrement performante, mais il est possible de la rendre encore plus performante en améliorant la conception, le déploiement et les réglages de l'application. Pour plus d'informations sur l'analyse et l'optimisation des services Web, voir la rubrique Supervision des performances des applications de services Web.

Si vous utilisez une application de services Web qui a été développée pour une version antérieure à la version 6 de WebSphere Application Server, vous pouvez optimiser ses performances en exécutant la commande wsdeploy. La commande wsdeploy régénère les classes des artefacts des services Web pour augmenter les performances de sérialisation et de désérialisation.

La commande wsdeploy est prise en charge par des applications Java API for XML-based RPC (JAX-RPC). Le modèle de programmation Java API for XML-Based Web Services (JAX-WS) qui est implémenté par le serveur d'applications ne prend pas en charge la commande wsdeploy. Si votre application de services Web contient uniquement des noeuds finaux JAX-WS, il n'est pas utile d'exécuter la commande wsdeploy, car elle n'est utilisée que pour traiter les noeuds finaux JAX-RPC.

Principes élémentaires de conception d'une application de services Web hautes performances

Voici les points essentiels à connaître avant de se lancer dans la conception d'une application de services Web :
  • Limitez les demandes adressées aux services Web en utilisant quelques API multifonctionnelles au lieu d'un grand nombre d'API simples.
  • Concevez l'interface de votre fichier WSDL de manière à limiter la taille et la complexité des messages SOAP.
  • Utilisez l'argument de style document/literal lorsque vous générez le fichier WSDL.
  • Exploitez les capacités de mise en cache de WebSphere Application Server.
  • Testez les performances de votre service Web.

Optimisation des performances des services Web JAX-WS pour WebSphere Application Server

Selon votre scénario d'utilisation des services Web, vous pouvez utiliser les propriétés personnalisées de machine virtuelle Java suivantes pour optimiser les performances des services Web JAX-WS. Une fois que vous avez modifié les valeurs de ces propriétés personnalisées de JVM, vous devez redémarrer WebSphere Application Server pour que vos modifications soient prises en compte.

  • Dans WebSphere Application Server version 8.5.5.2 ou version ultérieure, utilisez la propriété personnalisée suivante pour optimiser les performances JAXB :
    com.ibm.websphere.webservices.jaxwsOptimizeLevelOne
    Affectez la valeur true à cette propriété personnalisée pour régler l'optimisation des performances JAX-WS sur le niveau 1.
    La valeur par défaut est false.
    Remarque : Lorsque cette propriété personnalisée est activée, certains modes opératoires sans spécification doivent être modifiés. Désactivez la propriété si votre application a une dépendance vis-à-vis de comportements sans spécification de ce type et que vous constatez que cela perturbe son fonctionnement.
    Remarque : Vous constaterez peut-être que l'ordre des balises XML dans les messages SOAP est différent de celui des versions précédentes.
  • Dans WebSphere Application Server version 8.5.5.0 ou version ultérieure, utilisez les propriétés personnalisées suivantes pour optimiser les performances des gestionnaires généraux de moteur JAX-WS. Soyez prudent lorsque vous activez ces propriétés personnalisées. Le fonctionnement des services Web correspondants peut se trouver perturbé dans le cas contraire. Notez que les propriétés JVM suivantes sont sans effet sur les gestionnaires JAX-WS définis par l'utilisateur.
    com.ibm.ws.websvcs.disableWSDMHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction WSDM (Web Services Distributed Management). La valeur par défaut est false.
    com.ibm.ws.websvcs.disableWSSecurityHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction WS-Security. La valeur par défaut est false.
    com.ibm.ws.websvcs.disableWSTXHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction WS-Transaction. La valeur par défaut est false.
    com.ibm.ws.websvcs.disableWSRMHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction WS-RM. La valeur par défaut est false.
    com.ibm.ws.websvcs.disablePMIHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction de collecte de données PMI des services Web. La valeur par défaut est false.
    com.ibm.ws.websvcs.disablePMIRMHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la collecte des données PMI de la fonction WS-RM. La valeur par défaut est false.
    com.ibm.ws.websvcs.disableAddressingHandler
    Utilisez cette propriété pour contrôler la désactivation des gestionnaires de moteur JAX-WS des services Web pour la fonction WS-Addressing. La valeur par défaut est false.
    com.ibm.ws.websvcs.disableDefaultGlobalHandlers
    Utilisez cette propriété pour contrôler la désactivation de tous les gestionnaires de moteur JAX-WS des services Web par défaut. Si cette propriété a la valeur true, ceci remplace la valeur des propriétés personnalisées suivantes par true également.
    • com.ibm.ws.websvcs.disableWSDMHandler
    • com.ibm.ws.websvcs.disableWSSecurityHandler
    • com.ibm.ws.websvcs.disableWSTXHandler
    • com.ibm.ws.websvcs.disableWSRMHandler
    • com.ibm.ws.websvcs.disablePMIHandler
    • com.ibm.ws.websvcs.disablePMIRMHandler
    • com.ibm.ws.websvcs.disableAddressingHandler
    La valeur par défaut de cette propriété personnalisée est false.

Autres facteurs de performances des services Web dont vous pouvez tirer parti

  • Lorsqu'un client de services Web et un conteneur Web sont situés dans le même processus de serveur d'applications, il existe un moyen d'améliorer leurs performances en les faisant communiquer par un chemin optimisé. Pour plus de détails sur l'activation de cette fonction, voir les informations sur l'optimisation de la communication entre client de services Web et conteneur Web.
  • L'accès aux services web à travers plusieurs protocoles de transport étend les capacités existantes de JAX-RPC (Java API for XML-based remote procedure call) en vue de prendre en charge des liaisons non SOAP telles que RMI/IIOP et JMS. Ces transports alternatifs peuvent améliorer les aspects performances et qualité de service des services Web. Pour plus d'informations, voir les informations sur l'utilisation combinée de RMI-IIOP et de JAX-RPC.
  • SAAJ (SOAP with Attachments API for Java) version 1.2 fournit un modèle de programmation pour les services Web relatifs à JAX-RPC. L'API SAAJ est dotée de fonctions permettant de créer et de traiter des demandes SOAP à l'aide d'une API XML. SAAJ prend en charge l'analyse syntaxique "just-in-time" ainsi que d'autres algorithmes internes. Pour plus d'informations sur SAAJ ou la programmation des services Web, voir la rubrique sur SAAJ (SOAP with Attachments API for Java).

    SAAJ 1.3 prend en charge les services Web qui sont développés et implémentés sur la base du modèle de programmation JAX-WS (Java API for XML Web Services).

  • L'outillage de création de services Web génère des désérialiseurs personnalisés, aux performances plus élevées, pour tous les beans JAX-RPC. Le redéploiement d'une application v5.x dans le module d'exécution V6 peut réduire le temps de traitement des gros messages.
  • Le module d'exécution de sérialisation et de désérialisation est amélioré pour permettre la mise en cache des sérialiseurs et désérialiseurs souvent utilisés. Cela peut aussi réduire le temps de traitement des gros messages.

IBM® met à disposition des valeurs recommandées ainsi qu'une documentation très riche, consacrées à la conception et au développement d'applications de services Web, dans laquelle ces sujets ainsi que d'autres sont traités plus en détail.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_perfbestpractices
Nom du fichier : rwbs_perfbestpractices.html