5

Sto usando maven-jaxws-plugin per generare classi java dal mio wsdl, schema. Non sta generando l'annotazione @XmlElementWrapper nelle classi generate. Da this post ho capito di usare il plugin jaxb-xew ma non riesco a farlo funzionare con il plugin maven-jaxws. Qualsiasi aiuto sarebbe apprezzato. Ecco l'config ho provatocome ottenere maven-jaxws-plugin per generare @XmlElementWrapper su classi generate da xsd?

<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> 

Se può essere integrato solo con il Maven-jaxb2-plugin può cortesemente aiutarmi a ottenere il mio webservice up? In sostanza Come si specifica wsdl e come generare le classi di servizio? (Con @WebService annotazione)

Grazie,

Bhagya

risposta

3

anche se questo post è di 10 mesi di età al momento della mia scrittura, rispondo che nel caso in cui qualcuno avrebbe bisogno.

con jaxws-maven-plugin e con l'aiuto di JAXB-xew-plugin è possibile generare @XmlElementWrapper annotazione per la vostra lista/oggetti array

supponendo che il WSDL ha lo schema del tipo:

<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> 

genera Java come:

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

e qui è la 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

Grazie, esattamente quello che stavo cercando. Ho dovuto inserire l'elemento xjcArgs nel primo blocco di configurazione, oppure gli argomenti non sono stati passati (maven 3.1.0). Aggiornato di conseguenza la risposta. – Dormouse

Problemi correlati