mardi 7 avril 2009

Client JAX-WS avec Maven

Cela faisait longtemps que je n'avais pas fait un billet sur les Web Services. En voici donc un pour créer facilement un client JAX-WS avec Maven.

Pour commencer, dans le fichier pom.xml, il faut y mettre les repositories Sun pour les dépendances JAX-WS et le plugin utilisé pour la génération de code :



maven-repository.dev.java.net
Java.net Repository for Maven 1
http://download.java.net/maven/1/
legacy


maven2-repository.dev.java.net
Java.net Repository for Maven 2
http://download.java.net/maven/2/





maven2-repository.dev.java.net
http://download.java.net/maven/2/



Ensuite, on ajoute le plugin jaxws-maven-plugin :


org.codehaus.mojo
jaxws-maven-plugin



wsimport


client.jaxws.addnumbers
${basedir}/src/main/java





Par défaut, le goal wsimport génère le code pour les fichiers WSDL situé dans le répertoire src/wsdl. Nous allons donc mettre notre fichier wsdl dans ce répertoire(par exemple le addnumbers.wsdl des samples JAX-WS RI).
La balise sourceDestDir permet de définir la destination du code généré. Par défaut, il est dans target/jaxws/wsimport/java.

Une seule dépendance suffit pour le client :


com.sun.xml.ws
jaxws-rt
2.1.4
jar
compile


Une simple commande mvn compile permet de générer le code et de le compiler.
La génération de code ne se fait qu'une fois tant que le répertoire target/stale existe.

Il n'y a plus qu'à créer une classe de test pour faire l'appel WebService :

package client.jaxws;

import client.jaxws.addnumbers.AddNumbersFault_Exception;
import client.jaxws.addnumbers.AddNumbersPortType;
import client.jaxws.addnumbers.AddNumbersService;

public class AddNumbers {

public static void main(String[] args) {

AddNumbersPortType client =
new AddNumbersService().getAddNumbersPort();

try {
int result = client.addNumbers(2, 2);
System.out.println("Résultat : " + result);
} catch (AddNumbersFault_Exception e) {
System.out.println(e.getFaultInfo().getMessage());
}
}
}

Pour plus de facilité, voici le fichier pom.xml complet :


4.0.0
client.jaxws
addnumbers
1.0.0



maven-repository.dev.java.net
Java.net Repository for Maven 1
http://download.java.net/maven/1/
legacy


maven2-repository.dev.java.net
Java.net Repository for Maven 2
http://download.java.net/maven/2/




maven2-repository.dev.java.net
http://download.java.net/maven/2/






org.codehaus.mojo
jaxws-maven-plugin



wsimport


client.jaxws.addnumbers
${basedir}/src/main/java





org.apache.maven.plugins
maven-compiler-plugin
2.0.2

1.5
1.5







com.sun.xml.ws
jaxws-rt
2.1.4
jar
compile