Modèle de programmation client JAX-WS

Le modèle de programmation de client de services Web JAX-WS (Java™ API for XML-Based Web Services) prend en charge l'API de client Dispatch et l'API de client Dynamic Proxy. L'API de client Dispatch est un modèle de programmation de client dynamique, alors que le modèle de programmation de client statique pour JAX-WS est le client Dynamic Proxy. Les clients Dispatch et Dynamic Proxy permettent l'appel synchrone et asynchrone des services web JAX-WS.

  • Client Dispatch : Utilisez ce client lorsque vous souhaitez travailler au niveau des messages XML ou travailler sans aucun artefact généré au niveau JAX-WS.
  • Client Dynamic Proxy : Utilisez ce client lorsque vous souhaitez appeler un service web basé sur une interface de noeud final de service.

Client Dispatch

Les services Web XML utilisent des messages XML pour les communications entre les services Web et les clients de services Web. Les API JAX-WS fournissent des méthodes de haut niveau simplifiant et masquant les détails des conversions entre les appels de méthode Java et les messages XML qui leur sont associés. Cependant, dans certains cas, vous pouvez être amené à travailler au niveau des messages XML. Le support permettant l'appel des services au niveau des messages XML est fourni par l'API de client Dispatch. L'API de client Dispatch, javax.xml.ws.Dispatch, est une interface de programmation de client JAX-WS dynamique. Pour écrire un client Dispatch, vous devez avoir des compétences en matière d'API de client Dispatch et de types d'objets pris en charge, ainsi que des connaissances des représentations de message pour le fichier WSDL (Services Description Language) Web associé. Le client Dispatch peut envoyer des données en mode MESSAGE ou PAYLOAD. En mode javax.xml.ws.Service.Mode.MESSAGE, le client Dispatch est chargé de fournir la totalité de l'enveloppe SOAP qui inclut les éléments <soap:Envelope>, <soap:Header> et <soap:Body>. En mode javax.xml.ws.Service.Mode.PAYLOAD, le client Dispatch n'est responsable que de la mise à disposition du contenu de l'élément <soap:Body> et JAX-WS inclut la charge dans un élément <soap:Envelope>.

L'API de client Dispatch exige que les clients d'application construisent des messages ou des charges sous forme de XML, ce qui nécessite des connaissances détaillées du message ou de la charge du message. Le client Dispatch prend en charge les types d'objets suivants :
  • javax.xml.transform.Source : les objets Source permettent aux clients d'utiliser directement des API XML. Vous pouvez utiliser les objets Source à l'aide de liaisons SOAP ou HTTP.
  • Objets JAXB : utilisez les objets JAXB pour que les clients puissent se servir des objets JAXB qui sont générés à partir d'un schéma XML pour créer et manipuler XML à l'aide d'applications JAX-WS. Les objets JAXB ne peuvent être utilisés qu'avec les liaisons SOAP ou HTTP.
  • javax.xml.soap.SOAPMessage : utilisez les objets SOAPMessage pour que les clients puissent travailler avec les messages SOAP. Vous ne pouvez utiliser les objets SOAPMessage qu'avec les liaisons SOAP.
  • javax.activation.DataSource : utilisez les objets DataSource de sorte que les clients puissent travailler avec les messages MIME (Multipurpose Internet Mail Extension). Les objets DataSource ne peuvent être utilisés qu'avec les liaisons HTTP.
Par exemple, si le type de paramètre d'entrée est javax.xml.transform.Source, l'appel de l'API de client Dispatch est similaire à l'exemple de code suivant :
Dispatch<Source> dispatch = … create a Dispatch<Source>
Source request = … create a Source object
Source response = dispatch.invoke(request);
La valeur de paramètre Dispatch détermine le type de retour de la méthode invoke().
Le client Dispatch est appelé selon une des trois méthodes suivantes :
  • Appel synchrone pour les demandes et réponses à l'aide de la méthode invoke
  • Appel asynchrone pour les demandes et réponses via la méthode invokeAsync à l'aide d'un objet de rappel ou d'interrogation
  • Appel unidirectionnel à l'aide des méthodes invokeOneWay

Pour plus d'informations sur l'utilisation d'un client Dispatch, consultez le chapitre 4, section 3 de la spécification JAX-WS.

Client Dynamic Proxy

Le modèle de programmation client statique pour JAX-WS est appelé client Dynamic Proxy. Ce dernier appelle un service web basé sur une interface de noeud final de service (SEI) qui doit être fournie. Le client Dynamic Proxy est similaire au client Stub dans le modèle de programmation JAX-RPC (Java API for XML-based RPC). Bien que le client Dynamic Proxy JAX-WS et le client Stub JAX-RPC soient tous les deux basés sur l'interface de noeud final de service (SEI) qui est générée à partir d'un fichier WSDL, il existe une différence majeure. Le client Dynamic Proxy est généré de façon dynamique au moment de l'exécution, à l'aide de la fonctionnalité Java 5 Dynamic Proxy, alors que le client Stub JAX-RPC est un fichier Java non portable qui est généré par des outils. Contrairement aux clients Stub JAX-RPC, le client Dynamic Proxy n'exige pas que vous régénériez un raccord avant l'exécution du client sur un serveur d'applications d'un fournisseur différent, car l'interface générée ne nécessite pas les informations relatives au fournisseur concerné.

Les instances Dynamic Proxy permettent l'extension de la classe java.lang.reflect.Proxy et tirent parti de la fonction Dynamic Proxy dans JRE 6 (Java SE Runtime Environment 6) de base. L'application client peut ensuite fournir une interface servant à créer l'instance proxy, alors que l'environnement d'exécution est chargé de la création dynamique d'un objet Java représentant l'interface SEI.

Le client Dynamic Proxy est appelé selon une des trois méthodes suivantes :
  • Appel synchrone pour les demandes et réponses à l'aide de la méthode invoke
  • Appel asynchrone pour les demandes et réponses via la méthode invokeAsync à l'aide d'un objet de rappel ou d'interrogation
  • Appel unidirectionnel à l'aide des méthodes invokeOneWay

Pour plus d'informations sur l'utilisation des clients Dynamic Proxy, consultez le chapitre 4 de la spécification JAX-WS.


Icône indiquant le type de rubrique Rubrique de concept



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=cwbs_jaxwsclients
Nom du fichier : cwbs_jaxwsclients.html