Próbuję wygenerować klienta z Maven i JAXB z pliku WSDL z 2 schematów wewnętrznych i niektórych elementów o tej samej nazwie z różnych schematówDostosowywanie pakietów Java JAXB wsimport
Kiedy próbuję wykonać kompilację I otrzymuję następny błąd:
Two declarations cause a collision in the ObjectFactory class.
WSDL schematy:
<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>
próbowałem zmiany nazwy elementów, które produkować błąd, ale następnie mój klient wiosny otrzymać prawidłowy komunikat SOAP, ale nie wypełnia prawidłowo obiektu odpowiedzi (wszystkie jego atrybuty są zerowe). Domyślam się, że problem może wynikać z przemianowania klas odpowiedzi, dlatego próbuję generować różne pakiety zachowując oryginalną nazwę wszystkich klas.
W tym celu napisałem następny plik powiązań, ale nie wiem, co robię źle, ponieważ nie działa.
bindings.xml file:
<?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>
Moja część konfiguracji w pliku maven jest obok, na wszelki wypadek warto:
<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>
Kiedy skompilować z tego wiązań plików , pojawia się ten sam błąd. Więc myślę, że może to nie jest w porządku.
Czy znalazłeś jakieś błędy?
Dzięki.
Just a wskazówka: można usunąć "bindingFiles" sekcję konfiguracji całkowicie jeśli umieścić wszystkie swoje pliki wiążące w src/JAXWS! Zostaną one następnie automatycznie pobrane przez jaxws-maven-plugin. – headcr4sh