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 :
- <repositories>
- <repository>
- <id>maven-repository.dev.java.net</id>
- <name>Java.net Repository for Maven 1</name>
- <url>http://download.java.net/maven/1/</url>
- <layout>legacy</layout>
- </repository>
- <repository>
- <id>maven2-repository.dev.java.net</id>
- <name>Java.net Repository for Maven 2</name>
- <url>http://download.java.net/maven/2/</url>
- </repository>
- </repositories>
- <pluginrepositories>
- <pluginrepository>
- <id>maven2-repository.dev.java.net</id>
- <url>http://download.java.net/maven/2/</url>
- </pluginrepository>
- </pluginrepositories>
Ensuite, on ajoute le plugin jaxws-maven-plugin :
- <plugin>
- <groupid>org.codehaus.mojo</groupid>
- <artifactid>jaxws-maven-plugin</artifactid>
- <executions>
- <execution>
- <goals>
- <goal>wsimport</goal>
- </goals>
- <configuration>
- <packagename>client.jaxws.addnumbers</packagename>
- <sourcedestdir>${basedir}/src/main/java</sourcedestdir>
- </configuration>
- </execution>
- </executions>
- </plugin>
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 :
- <dependency>
- <groupid>com.sun.xml.ws</groupid>
- <artifactid>jaxws-rt</artifactid>
- <version>2.1.4</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
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 :
- <project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelversion>4.0.0</modelversion>
- <groupid>client.jaxws</groupid>
- <artifactid>addnumbers</artifactid>
- <version>1.0.0</version>
- <repositories>
- <repository>
- <id>maven-repository.dev.java.net</id>
- <name>Java.net Repository for Maven 1</name>
- <url>http://download.java.net/maven/1/</url>
- <layout>legacy</layout>
- </repository>
- <repository>
- <id>maven2-repository.dev.java.net</id>
- <name>Java.net Repository for Maven 2</name>
- <url>http://download.java.net/maven/2/</url>
- </repository>
- </repositories>
- <pluginrepositories>
- <pluginrepository>
- <id>maven2-repository.dev.java.net</id>
- <url>http://download.java.net/maven/2/</url>
- </pluginrepository>
- </pluginrepositories>
- <build>
- <plugins>
- <plugin>
- <groupid>org.codehaus.mojo</groupid>
- <artifactid>jaxws-maven-plugin</artifactid>
- <executions>
- <execution>
- <goals>
- <goal>wsimport</goal>
- </goals>
- <configuration>
- <packagename>client.jaxws.addnumbers</packagename>
- <sourcedestdir>${basedir}/src/main/java</sourcedestdir>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupid>org.apache.maven.plugins</groupid>
- <artifactid>maven-compiler-plugin</artifactid>
- <version>2.0.2</version>
- <configuration>
- <source>1.5
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupid>com.sun.xml.ws</groupid>
- <artifactid>jaxws-rt</artifactid>
- <version>2.1.4</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- </dependencies>
- </project>