Ecrire un Web-Service en Java: JAX-WS
Ce ne sera pas long!
1- Il faut écrire la classe dont les méthodes seront accessibles par Web-Service
- package com.bg.test.webService;
- import javax.jws.WebMethod;
- import javax.jws.WebParam;
- import javax.jws.WebResult;
- import javax.jws.WebService;
- @WebService
- public class ValidationVisaCard {
- public ValidationVisaCard() {
- }
- @WebMethod
- @WebResult( name="CardStatus")
- // Ecrire un traitement ici! Le plus leger possible cependant
- return "ok";
- }
- @WebMethod
- @WebResult(name="helloResult")
- return "Hello";
- }
- }
On remarque les annotations. Leur sens est clair , et ne demande pas plus d’explications .
Ensuite , il faut prevoir une methode pour lancer le ws :
(Et oui, java comporte un serveur http en standard! Mais ou est passé le soap ? On rève!)
Si vous exécutez , a ce stade , vous allez avoir une exception:
class: com.bg.test.webService.jaxws.ValidateCard could not be found
La compilation est un plus délicate : Il faut générer des classes qui permettront de lancer le Web-Service.
Soit on appelle directement l’outil wsgen qui est fourni dans le jdk; soit on utilise ant pour activer cet outil..
Il faut bien compiler avec les options target et source pour java 1.6
Je suppose également que le directory jdk1.6.xx/bin est dans le path system (Pour trouver l’utilitaire wsgen)
Voilà le fichier ant qui permet de compiler et d’appeler wsgen:
- <project name="testWS" default="bg-generate-server-artifacts">
- <target name="bg-compile" depends="">
- <mkdir dir="classes"/>
- <javac srcdir="src/main/java"
- destdir="classes"
- source="1.6"
- target="1.6"
- deprecation="on">
- </javac>
- </target>
- <target name="bg-generate-server-artifacts" depends="bg-compile">
- <echo message="Generates the server artifacts"/>
- <mkdir dir="classesGenerated"/>
- <mkdir dir="srcGenerated"/>
- <exec executable="wsgen" failonerror="true">
- <arg line=" -cp classes"/>
- <arg line=" -d classesGenerated"/>
- <arg line=" -keep"/>
- <arg line=" -wsdl"/>
- <arg line=" -r srcGenerated"/>
- <arg line=" -s srcGenerated"/>
- <arg line=" com.bg.test.webService.ValidationVisaCard"/>
- </exec>
- </target>
- </project>
On peut (Il est même vivement conseillé!) regarder les fichiers générés (Les .java, les wsdl, les shema)
C’est presque fini.
Il y a plus qu’à mettre le directory “classesGenerated” dans le classpath, et lancer notre application.
Il y a une trace :
WS wsdl http://localhost:8083/bg/monPremierTest?wsdl
Prenez un navigateur, et contemplez votre wsdl!
Il y a d’autres API qui permettent de générer des Web-Services (Voir Axis, et cxf, 2 produits fabuleux d’apache).
Tel que nous l’avons fait, l’emploi de wsgen est un peu lourd peut être?
Qu’en pensez vous ?
antoine.guiral.info
bertrand.guiral.info
ertrand Guiral : formateur et consultant
















Laissez un commentaire