5

Ich benutze Maven-Jaxws-Plugin, um Java-Klassen von meinem WSDL, Schema zu generieren. Es generiert nicht die @ XmlElementWrapper-Annotation in den generierten Klassen. Von this Post Ich verstehe, ich nedd das Jaxb-Xew-Plugin zu verwenden, aber ich bin nicht in der Lage, es mit dem Maven-Jaxws-Plugin arbeiten. Jede Hilfe wäre willkommen. Hier ist die Config-IWie bekomme ich maven-jaxws-plugin um @XmlElementWrapper für Klassen zu generieren, die von xsd generiert wurden?

versuchte
<plugin> 
    <groupId>org.jvnet.jax-ws-commons</groupId> 
    <artifactId>jaxws-maven-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
    <execution> 
     <goals> 
       <goal>wsimport</goal> 
      </goals> 
      <phase>generate-resources</phase> 
      <configuration> 
       <xjcArgs> 
        <xjcArg>-no-header</xjcArg> 
        <xjcArg>-Xxew</xjcArg> 
        <xjcArg>-Xxew:instantiate lazy</xjcArg> 
        <xjcArg>-Xxew:delete</xjcArg> 
       </xjcArgs> 
       <extension>true</extension> 

       <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory> 
       <wsdlFiles> 
        <wsdlFile>attribute-service.wsdl</wsdlFile> 
       </wsdlFiles> 
       <sourceDestDir>${project.build.directory}/generated</sourceDestDir> 
       <verbose>true</verbose> 
       <keep>true</keep> 
       <plugins> 
        <plugin> 
         <groupId>com.github.jaxb-xew-plugin</groupId> 
         <artifactId>jaxb-xew-plugin</artifactId> 
         <version>1.0</version> 
        </plugin> 
       </plugins> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Wenn es nur mit der Maven-jaxb2-Plugin integrieren können Sie mir bitte mein WebService aufstehen helfen? Im Wesentlichen Wie lege ich die WSDL fest und wie erzeuge ich die Serviceklassen? (Mit @WebService Anmerkung)

Danke,

Bhagya

Antwort

3

obwohl dieser Beitrag 10 Monate alt zum Zeitpunkt meines Schreibens ist, antworte ich es für den Fall, jemand würde es brauchen.

mit jaxws-Maven-Plugin und mit Hilfe von jaxb-xew-Plugin Sie @XmlElementWrapper Anmerkung für Ihre Liste generieren/Array-Objekte

vorausgesetzt, Ihren Wsdl hat Schema wie:

<xs:element name="books" minOccurs="0" > 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="book" type="Book" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

es erzeugt Java als:

@XmlElementWrapper(name = "books") 
@XmlElement(name = "book") 
protected List<Book> books; 

und hier ist das build/Plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxws-maven-plugin</artifactId> 
    <version>1.12</version> 
    <configuration> 
     <wsdlDirectory>${project.basedir}/src/main/webapp/WEB-INF/wsdl/</wsdlDirectory> 
     <xjcArgs> 
      <xjcArg>-no-header</xjcArg> 
      <xjcArg>-Xxew</xjcArg> 
      <xjcArg>-Xxew:instantiate lazy</xjcArg> 
      <xjcArg>-Xxew:delete</xjcArg> 
     </xjcArgs> 
    </configuration> 
    <executions> 
     <execution> 
      <id>wsdl_import</id> 
      <goals> 
       <goal>wsimport</goal> 
      </goals> 
     </execution> 
    </executions> 

    <dependencies> 
     <dependency> 
      <groupId>com.github.jaxb-xew-plugin</groupId> 
      <artifactId>jaxb-xew-plugin</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-xjc</artifactId> 
      <version>2.2.4-1</version> 
     </dependency>     
    </dependencies> 
</plugin> 
+0

Vielen Dank, genau das, was ich gesucht habe. Ich musste das xjcArgs Element in den ersten Konfigurationsblock setzen, oder die Argumente wurden nicht übergeben (Maven 3.1.0). Die Antwort wurde entsprechend aktualisiert. – Dormouse

Verwandte Themen