Vous êtes sur la page 1sur 23

Développement d’un service

web avec l’API JAX-WS

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 du 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
• Les principales annotations sont les suivantes
–@WebService : une classe 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

5
Exemple : Implémentation du SW
HelloWorld

6
Annotations : @WebService (1/2)
• Attributs de l’annotation @WebService
–String name : nom utilisé dans l'attribut name de
l'élément portType du WSDL
–String targetNamespace : le namespace du Service Web
–String portName : nom du port de l’élément service du
WSDL
–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

7
Annotations : @WebService
• (2/2)
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, c’est au niveau de
l’interface qu’on a la plus grande maitrise sur la génération du
WSDL :

8
Exemple d’annotation
@WebService
Package test;
@WebService(targetNamespace = "http:/localhost/ws/Bonjour")
Public interface BonjourInterface{
………….
}
Import test.*;
@WebService(servicename = "BonjourWSPortype",
endpointInterface=‘’test.bonjourInterface",
portName=‘’BonjourServicePort’’)
public class BonjourServiceImpl {
………….
}
9
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
10
Exemple de
@WebMethod

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

11
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
12
Exemple de
@webParam
@WebMethod(operationName
= "SaluerMessage")
public String Saluer(@WebParam(name
= "personne") String personne) ;

13
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
14
Exemple WebResult
@WebResult(partname=‘’returnmessage’’)
@WebMethod(operationName
= "SaluerMessage")
public String Saluer(@WebParam(name
= "personne") String personne) ;

15
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.
16
Exemple :Paramétrer l’interface du
SW HelloWorld

17
Exemple : paramétrer la classe du SW
Hello World

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 de
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

client
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
Exercice
• Annoter l’interface suivante afin de créer un service web
– le style et format sont respectivement Document/literal
– Les noms des paramètres d’entrées et de sortie sont à
votre choix
– L’espace de nommage comptebancaire:nouveautypes

23