Ich versuche, einen Client mit Maven und jaxb aus einer WSDL-Datei mit zwei Schemata innerhalb und einige Elemente mit dem gleichen Namen aus verschiedenen SchemataCustomizing Java-Pakete JAXB wsimport
zu erzeugen, wenn ich versuche, die Zusammenstellung auszuführen I bin der nächste Fehler bekommen:
Two declarations cause a collision in the ObjectFactory class.
WSDL-Schemata:
<wsdl:types>
<schema targetNamespace="http://ws.services" xmlns="http://www.w3.org/2001/XMLSchema">...</schema>
<schema targetNamespace="http://ws.models" xmlns="http://www.w3.org/2001/XMLSchema">...</schema>
</wsdl:types>
ich habe versucht, die Elemente umbenennen, dass produzieren Sie den Fehler, aber dann meine Frühjahrs-Client erhalten die richtige SOAP-Nachricht, aber es füllt das Antwortobjekt nicht ordnungsgemäß (alle seine Attribute sind Null). Ich schätze, das Problem könnte durch das Umbenennen der Antwortklassen entstehen, weshalb ich versuche, verschiedene Pakete zu erzeugen, die den ursprünglichen Namen aller Klassen behalten.
Um dies zu tun, schrieb ich die nächste Bindings-Datei, aber ich weiß nicht, was ich falsch mache, dass es nicht funktioniert.
bindings.xml Datei:
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.1"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<jaxb:bindings schemaLocation="mywsdl.wsdl#types?schema1"
node="/xs:schema[@targetNamespace='http://ws.services']">
<jaxb:schemaBindings>
<jaxb:package name="package1" />
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="mywsdl.wsdl#types?schema2"
node="/xs:schema[@targetNamespace='http://ws.models']">
<jaxb:schemaBindings>
<jaxb:package name="package2" />
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
in der Maven-Datei Mein Konfigurationsteil ist die nächste, falls es sinnvoll ist:
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<wsdlLocation>wsdl/mywsdl.wsdl</wsdlLocation>
<wsdlDirectory>src/main/resources/wsdl</wsdlDirectory>
<wsdlFiles>
<wsdlFile>mywsdl.wsdl</wsdlFile>
</wsdlFiles>
<bindingDirectory>src/main/resources/wsdl</bindingDirectory>
<bindingFiles>
<bindingFile>bindings.xml</bindingFile>
</bindingFiles>
<packageName>original.package</packageName>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
</configuration>
Wenn ich kompiliere mit diesen Bindungen Dateien , der gleiche Fehler erscheint. Also denke ich, dass es vielleicht nicht stimmt.
Haben Sie Fehler gefunden?
Danke.
Nur ein Tipp: Sie können den "bindingFiles" Konfigurationsabschnitt vollständig entfernen, wenn Sie alle Ihre verbindlichen Dateien in src platzieren/jaxws! Sie werden dann automatisch vom jaxws-maven-plugin abgeholt. – headcr4sh