Vous êtes sur la page 1sur 22

Développement d’un service

web avec l’API JAX-WS

Pour D-IITWM
Par Imen Ben Lahmar

1
Développement d’un service
• La majorité des langages de programmation orientés
Web supportent le développement de services Web
– Java, PHP, C#, C++, …
• Pour java :
– JAX-WS Specification Sun (Java API for XML Web Services)
– AXIS 1 et 2 Apache (ws.apache.org/axis et
ws.apache.org/axis2)
– CXF Apache (cxf.apache.org)
– XFire Codehaus (xfire.codehaus.org)
– JBossWS JBoss (www.jboss.org/jbossws)

2
C’est quoi JAX-WS?
• Java API for XML Web Services
• Contenu de JAX-WS
– Une API basée sur Java et XML
– Un ensemble d’annotations utilisées par l’outil
Annotation ProcessingTool (APT) pour générer des
composants coté serveur ou coté client.
– Des outils de génération.
• L’implémentation JAX-WS est intégrée
nativement à la JRE depuis la version 6
3
Développement de service web avec JAX-WS

• pour développer un Service Web avec JAX-WS à


partir d’une classe java :
• Créer et annoter une classe
• Compiler et tester
• Le document WSDL est automatiquement généré
• Générer les classes nécessaires de développement d’un
client à partir de wsdl obtenu
• Invoquer le service

4
Les annotations de JAX-WS (1/3)
• Les principales annotations sont les suivantes
– @WebService : une classe / interface implémentant un
Service Web
– @WebMethod : Paramétrer une opération
– @WebParam : Paramétrer un message
– @WebResult : Paramétrer un message de sortie
– @SOAPBinding : spécifier le style et le format des messages
SOAP
• A noter que seule l’utilisation de l’annotation
@WebService est nécessaire (utilisation de valeurs par
défaut)
5
Les annotations de JAX-WS (2/3)

6
Les annotations de JAX-WS (3/3)
• L'annotation WebService permet de définir une classe en tant
qu’une implémentation d’un service web ou une interface comme
étant l'interface du endpoint d'un service web.
• Si une classe implémente une interface, on distingue deux niveaux
d’annotations
– Au niveau de l’interface, il faut utiliser l’annotation
@WebService et autres annotations optionnels
– Au niveau de la classe, on utilise aussi l’annotation @webservice
pour spécifier le endpoint

7
Exemple : Implémentation du SW HelloWorld

8
Annotations : @WebService (1/2)
• Attributs de l’annotation @WebService
– String name : Nom de portType.
• La valeur par défaut est le nom de la classe ou de l'interface Java.
– String targetNamespace : le namespace du Service Web,
• La valeur par défaut est l'espace de nom mappé à partir du nom
de package contenant le service Web
– String serviceName : le nom du service utilisé dans l'attribut name de
l'élément service du WSDL.
• Par défaut, c'est le nom de la classe suffixée par "Service"
– String endpointInterface : nom de l’interface décrivant le Service Web
– String portName : nom du port de l’élément service du WSDL

9
Exemple d’annotation @WebService
Package test;
@WebService(targetNamespace = "http:/localhost/ws/Bonjour”,
servicename = "BonjourWSPortype", portName=‘’BonjourServicePort’)
Public interface BonjourInterface{
………….
}
Import test.*;
@WebService( endpointInterface=‘’test.bonjourInterface")
public class BonjourServiceImpl implements BonjourInterface{
………….
}

10
Annotations : @WebMethod
• Annote une méthode d’une classe Java exposée
comme une opération du Service Web
• Attributs de l’annotation : @WebMethod
– boolean exclude : précise que la méthode ne doit
pas être exposée comme une opération. Ne pas
utiliser dans une interface Java
– String operationName : précise le nom de l’attribut
name défini dans l’élément operation du document
WS

11
Exemple de @webMethod

@WebMethod(operationName
= "SaluerMessage")
public String Saluer( String personne);

12
Annotations : @WebParam
• Décrit la relation entre un paramètre d’entrée
d’une méthode et un message part d’une opération
• Attributs de l’annotation
– String name : nom du paramètre de l’élément d’un
complexe type
– String partName : le nom du wsdl:part représentant
ce paramètre
– String targetNamespace : l’espace de nommage de ce
paramètre

13
Exemple de @webParam

@WebMethod(operationName
= "SaluerMessage")
public String Saluer(@WebParam(name
= "persName") String personne) ;

14
Annotations : @WebResult
• Décrit la relation entre le paramètre de sortie d’une
méthode et un message part d’une opération
• Attributs de l’annotation
– String name : nom du l’élément du paramètre de
sortie
– String partName : le nom du wsdl:part représentant
ce paramètre de sortie
– String targetNamespace : l’espace de nommage de ce
paramètre de sortie

15
Exemple webResult
@WebResult(partname=‘’returnmessage’’)
@WebMethod(operationName
= "SaluerMessage")
public String Saluer(@WebParam(name
= "personne") String personne) ;

16
Annotation : @SOAPBinding
• L'annotation @SOAPBinding indique le mappage
du service Web vers le protocole de message SOAP.
• Les attributs de l’annotation :
– Style : Définit le style de codage des messages envoyés à
destination et en provenance du service Web. Les
valeurs admises sont DOCUMENT et RPC. La valeur par
défaut est DOCUMENT.
– Use : Définit le format utilisé pour les messages envoyés
à destination et en provenance du service Web. La
valeur par défaut est LITERAL.

17
Exemple de @SOAPBinding

18
La publication du service web
• Publier le Service Web par l’intermédiaire de la méthode publish :

– La méthode publish est utilisée pour démarrer la publication du Service Web


– String adresse : adresse de déploiement du Service Web depuis le serveur Web
embarqué (http://localhost:8080/ws)
– Object implementor : instance de l’implémentation du Service Web

• Différentes méthodes proposées par la classe Endpoint (type de retour de


la méthode publish)
– boolean isPublished() : vérifie si le service est en publication
– void stop() : arrête la publication du Service Web

19
Exemple de publication

20
La création du client
• Le développement du client consiste à appeler
des opérations du Service Web à partir d’un
programme Java
• Le développement du client suit une
procédure similaire à l’approche Top / Down
où le point de départ est le document WSDL
(via une URL ou via un fichier physique)

21
La création de la classe cliente
• Création d’une instance de la classe ServiceLocator
• Récupération d’un port via la méthode get
• Invocation des opérations

22

Vous aimerez peut-être aussi