5

J'utilise maven-jaxws-plugin pour générer des classes Java à partir de mon schéma wsdl. Il ne génère pas l'annotation @XmlElementWrapper dans les classes générées. De this post, je comprends que je dois utiliser le jaxb-xew-plugin mais je n'arrive pas à le faire fonctionner avec le plugin maven-jaxws. Toute aide serait appréciée. Voici la config j'ai essayécomment obtenir maven-jaxws-plugin pour générer @XmlElementWrapper sur les classes générées à partir de 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> 

Si elle ne peut être intégré au maven-plugin-jaxb2 pouvez-vous s'il vous plaît me aider à obtenir mon webservice up? Essentiellement Comment est-ce que je spécifie le wsdl et comment générer les classes de service? (Avec annotation @WebService)

Merci à tous,

Bhagya

Répondre

3

bien que ce poste est de 10 mois au moment de mon écriture, je réponds au cas où quelqu'un aurait besoin.

avec JAXWS-maven-plugin et avec l'aide de JAXB-xew-plugin vous pouvez générer annotation @XmlElementWrapper pour votre liste/array objets

en supposant que votre wsdl a schéma comme:

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

il génère java comme:

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

et est ici le 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

Merci, exactement ce que je cherchais. J'ai dû mettre l'élément xjcArgs dans le premier bloc de configuration, ou les arguments n'ont pas été passés (maven 3.1.0). Mis à jour la réponse en conséquence. – Dormouse

Questions connexes