как заставить maven-jaxws-plugin генерировать @XmlElementWrapper для классов, созданных из xsd?

Я использую maven-jaxws-plugin для создания классов Java из моего wsdl, schema. Он не создает аннотацию @XmlElementWrapper в созданных классах. Из этот пост я понимаю, что nedd использовать jaxb-xew-plugin, но я не могу заставить его работать с maven-jaxws-plugin. Любая помощь будет оценена по достоинству. Вот конфиг, который я пробовал

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

Если его можно интегрировать только с плагином maven-jaxb2, не могли бы вы помочь мне запустить мой веб-сервис? По существу, как указать wsdl и как создать классы службы? (с аннотацией @WebService)

Спасибо,

Бхагья


person user1459704    schedule 06.03.2013    source источник


Ответы (2)


хотя этому посту на момент написания 10 месяцев, я отвечаю на него, если кому-то это понадобится.

с помощью jaxws-maven-plugin и с помощью jaxb-xew-plugin вы можете сгенерировать аннотацию @XmlElementWrapper для ваших объектов списка/массива

предполагая, что ваш wsdl имеет такую ​​​​схему, как:

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

он генерирует java как:

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

а вот сборка/плагин

<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> 
person emil    schedule 14.01.2014
comment
Спасибо, именно то, что я искал. Мне пришлось поместить элемент xjcArgs в первый блок конфигурации, иначе аргументы не были переданы (maven 3.1.0). Обновил ответ соответственно. - person Dormouse; 14.02.2014

Примеры конфигурации плагина jaxws maven доступны на примерной странице jaxb. подключаемый модуль xew. jaxws-maven-plugin 2.3.1-b03 отлично работает с jaxb-xew-plugin 1.2.

person user2043553    schedule 15.05.2014