2016-09-14 2 views
1

Wir haben eine Reihe von Web-Services, die Vertrag zuerst entworfen werden. In den verschiedenen WSDL-Dateien sind gängige XML-Fragmente aus derselben XML-Schemadefinition enthalten. Allerdings ist das Ergebnis, dass die gleiche Klasse wie Address wird ein paar Mal für verschiedenen Web Service (wsimport) erstellt.Webservice-Vertrag zuerst umgekehrt - Verweis Java-Klasse in WSDL

Ist es möglich, mit Vertrag zuerst zu gehen, aber zuerst eine Reihe oder eine Handvoll von Java-Klassen definieren, die in verschiedenen WSDL-Dateien verwiesen werden? Dies würde die Programmierung sowohl am Frontend als auch am Backend erleichtern.

+0

Wir verwenden jaxws-maven-plugin. –

Antwort

0

Ich empfehle, zu cxf-codegen-plugin zu wechseln. Es ermöglicht eine größere Anpassung des Codegenerierungsprozesses.

Mit dem cxf-codegen-plugin können Sie Typen-Namespaces einem konkreten Paket zuordnen. Geben Sie einfach ein gemeinsames Paket für Ihre gemeinsamen Klassen an:

<wsdlOption> 
    <wsdl>${basedir}/src/main/resources/service1/Service1.wsdl</wsdl> 
    <extraargs> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/service1=com.namespace.service1</extraarg> 
    </extraargs> 
</wsdlOption> 
<wsdlOption> 
    <wsdl>${basedir}/src/main/resources/service2/Service2.wsdl</wsdl> 
    <extraargs> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/service2=com.namespace.service2</extraarg> 
    </extraargs> 
</wsdlOption> 
+0

Danke für den Hinweis. Ich denke auch, dass cxf-codegen-plugin die bessere Lösung sein könnte. Jaxws-maven-plugin bietet jedoch auch die Zuordnung von XML-Namespaces zu Java-Paketen von erzeugten Java-Klassen. Das Problem bleibt nach wie vor, wie als „eingehende Nachrichten“ an den Webservice Vertrag bestehende Java-Klassen zu verwenden. –