Mein laufendes Projekt ist ein Client für vorgegebene Webservices. Aus der WSDL-Datei werden durch eine Konfiguration in der pom.xml über das wsimport Kommando des Maven2-Plugins org.codehaus.mojo:jaxws-maven-plugin mit xjc Java-Klassen generiert. Nun ergab sich die Notwendigkeit, diese Klassen Serializable zu machen. Nach einer kurzen Recherche kam ich auf die folgende Lösung:
Zunächst wird in die xsd-Datei mit den Datentypen für den Webservice eine Annotation aufgenommen, mit der diese Klassen mit dem Interface Serializable markiert werden:
<xs:schema xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema" jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc"> <xs:annotation> <xs:appinfo> <jaxb:globalBindings> <xjc:serializable uid="10000001"/> </jaxb:globalBindings> </xs:appinfo> </xs:annotation> ... </xs:schema>An derselben Stelle könnte man auch eine beliebige Basisklasse einführen, von der diese generierten Klassen dann abgeleitet werden. Auch andere interessante Konfigurationen sind dort möglich. Doch zurück zum konkreten Fall: Dann muss noch in der pom.xml das Plugin für die Code-Generierung umkonfguriert werden, damit diese Erweiterung vom jxc überhaupt verwendet wird:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>1.9</version> <executions> <execution> <goals> <goal>wsimport</goal> </goals> </execution> </executions> <configuration> <keep>true</keep> <extension>true</extension> <xjcArgs></xjcArgs> </configuration> </plugin>
Twitter
Facebook
Reddit
LinkedIn
StumbleUpon
Email