Mit xjc s -enableIntrospection mit jaxws-maven-plugin
Haben in http://java.net/jira/browse/JAXB-131, wir versuchen zu erlassen, die Heilung in Ihren Kommentaren, die zu liefern, ist -enableIntrospection auf xjc-Befehlszeile.
Allerdings, wenn ich tun:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>allservice</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<xjcArgs><xjcArg>-enableIntrospection</xjcArg></xjcArgs>
<extension>true</extension>
<wsdlDirectory>src/main/webapp/WEB-INF/wsdl</wsdlDirectory>
<bindingDirectory>src/main/resources/bindings</bindingDirectory>
<target>2.0</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.jws</groupId>
<artifactId>jsr181-api</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
Den maven-build schlägt fehl mit:
[DEBUG] The binding Directory is C:\Source\workspace\TheProject\src\main\resources\bindings
[DEBUG] jaxws:wsimport args: [-s, C:\Source\workspace\TheProject\target\jaxws\wsimport\java, -d, C:\Source\workspace\TheProject\target\classes, -target, 2.0, -extension, -Xnocompile, -B-enableIntrospection, -b, C:\Source\workspace\TheProject\src\main\resources\bindings\servicebindings.xml]
[INFO] jaxws:wsimport args: [-s, C:\Source\workspace\TheProject\target\jaxws\wsimport\java, -d, C:\Source\workspace\TheProject\target\classes, -target, 2.0, -extension, -Xnocompile, -B-enableIntrospection, -b, C:\Source\workspace\TheProject\src\main\resources\bindings\servicebindings.xml, C:\Source\workspace\TheProject\src\main\webapp\WEB-INF\wsdl\CaseService.wsdl]
no such JAXB option: -enableIntrospection
Wie kann ich mit xjc s -enableIntrospection mit jaxws-maven-plugin? Wenn ich es nicht kann, welche alternativen existieren, um anzupassen jaxws die code-Generierung, so dass der getter für einen Boolean
Eigenschaft nennt man getFoo()
(richtig) anstatt isFoo()
(die gegen die Java Beans spec).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass die jaxws-maven-plugin verwendet den xjc aus dem JDK installiert. Die neuesten Oracle JDK enthält noch eine version von XJC, bevor die Unterstützung für enableIntrospection Hinzugefügt wurde.
Ich als Nächstes sah in mit einem JAXB-Plugin. Es dreht aus, dass die jaxws-maven-plugin bietet keine einfache Möglichkeit zum Anhängen an die classpath von XJC, die erforderlich ist, um Last JAXB-Plugins.
Austausch des jaxws-maven-plugin nicht möglich war, aus politischen Gründen (so etwas wie "jaxws ist der standard, nur standard-Bibliotheken können verwendet werden").
Daher habe ich gefallen zurück zu schreiben ein maven-plugin, dass liest den source code nach generation, hat
und schreibt die Quell-Datei wieder auf die Festplatte. Das hat auch mir erlaubt, zu injizieren Definitionen von
equals()
undhashCode()
, die sich auf die Namenskonvention für business-keys in der API-ich bin verbraucht.Hinzufügen Getter für Boolean Werte auf der Basis von JAX-WS generierten Artefakte, anstatt die enableIntrospection option und die Java gebilligt override Mechanismus.
Nur JAX-WS RI 2.1.13 unterstützt die option enableIntrospection. Aber JavaSE6 1.6.0_65 Schiffe mit JAVA-WS RI 2.1.6. Eine Möglichkeit dieses Problem zu beheben, ist die Verwendung der Java gebilligt override-Mechanismus, um die Kopie jaxws-api.jar und jaxb-api.jar in JRE/JDK endorsed-Verzeichnis.
Andere Möglichkeit ist, nicht die enableIntrospection option, sondern um Getter für Boolean Werte auf der Basis von JAX-WS generierten Artefakte. Diese Getter Hinzugefügt werden können, mit dem replacer-maven-plugin.
Maven-replacer-plugin hinzufügen, um eine get-Methode:
Ersetzt:
Mit: