Le plugin maven jaxws en action
Voila résumé en quelques lignes les différentes manipulations que j'ai effectué sur mon projet maven pour intégrer des services web:
D'abord j'ai crée un module à part entière qui centralise les sources générés à partir des fichiers WSDL. Dans ce projet de type jar
<!-- Paramètres généraux --> <modelVersion>4.0.0</modelVersion> <artifactId>wsclient</artifactId> <name>wsclient</name> <description /> <packaging>jar</packaging> <version>2.1.2-SNAPSHOT</version>
j'ai attaché à la phase generate-sources
la génération des STUBS à partir des fichiers WSDL.
Génération des couches d'appel
La seule configuration "exotique" que j'ai apporté est la configuration par package . Pour faire bref, un package = 1 service web. Logiquement, on n'a pas trop à faire ca car les objets doivent être factorisés. Mais bon vu la techno préhistorique que j'ai en face, je n'ai pas trop le choix
Pour que le plugin jaxws s'exécute bien, il faut faire la configuration suivante :
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <executions> <execution> <id>01</id> <phase>generate-sources</phase> <goals> <goal>wsimport</goal> </goals> <configuration> <verbose>true</verbose> <packageName>fr.monpackage.ws.1</packageName> <sourceDestDir>${basedir}/src/main/java</sourceDestDir> <staleFile>${project.build.directory}/jaxws/stale/.stale1Flag</staleFile> <wsdlFiles> <wsdlFile>01.wsdl</wsdlFile> </wsdlFiles> </configuration> </execution> <execution> <id>02</id> <phase>generate-sources</phase> <goals> <goal>wsimport</goal> </goals> <configuration> <verbose>true</verbose> <packageName>fr.monpackage.ws.2</packageName> <staleFile>${project.build.directory}/jaxws/stale/.stale2Flag</staleFile> <sourceDestDir>${basedir}/src/main/java</sourceDestDir> <wsdlFiles> <wsdlFile>02.wsdl</wsdlFile> </wsdlFiles> </configuration> </execution> </executions> </plugin>
Remarque : la personnalisation du fichier stale
est obligatoire
Nettoyage des fichiers générés
Pour automatiser la suppression des fichiers générés au moment de l'appel du plugin clean ,j'ai apporté la configuration suivante :
<plugin> <artifactId>maven-clean-plugin</artifactId> <configuration> <filesets> <fileset> <directory>${basedir}/src/main/java</directory> <includes> <include>**/**</include> </includes> </fileset> <fileset> <directory>${basedir}/src/wsdl</directory> <includes> <include>*.wsdl</include> </includes> </fileset> </filesets> </configuration> </plugin>
Inclusion dans l'EAR
A l'instar des autres JARS, j'ai inclus l'artifact wsclient dans mon ear en tant que MODULE JAR
<jarModule> <groupId>monpackage</groupId> <artifactId>wsclient</artifactId> <bundleFileName>wsclient.jar</bundleFileName> <includeInApplicationXml>true</includeInApplicationXml> </jarModule>
...
</modules>
Vu que je suis sous JBOSS, je n'ai pas à m'occuper des inclusions de CLASSPATH dans les fichiers MANIFEST