Невозможно сгенерировать правильный wsdl с помощью плагина cxf-java2ws-plugin. - PullRequest
0 голосов
/ 26 января 2012

Я пытаюсь сгенерировать файл wsdl из интерфейса MyWebService;

public interface MyWebService{
    public ResponseMessage processService(MyWSData myWSData);
}

, а вот классы Java

public class MyWSData extends Message {
    private String myString;
    private MyOtherClass[] myOtherClassArray;  
    private Long myLong;
}

public class MyOtherClass{
    private Long id;
    private String name;
}

, а вот мой файл pom.xml

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-java2ws-plugin</artifactId>
                <version>2.4.3</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.cxf</groupId>
                        <artifactId>cxf-rt-frontend-jaxws</artifactId>
                        <version>2.4.3</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.cxf</groupId>
                        <artifactId>cxf-rt-frontend-simple</artifactId>
                        <version>2.4.3</version>
                    </dependency>
                </dependencies>

                <executions>
                    <execution>
                        <id>process-classes</id>
                        <phase>process-classes</phase>
                        <configuration>
                            <className>com.ferdisonmezay.webservice.MyWebService</className>
                            <genWsdl>true</genWsdl>
                            <verbose>true</verbose>
                            <genClient>false</genClient>
                            <serviceName>MyWebService</serviceName>
                            <targetNameSpace>some-namespace-here</targetNameSpace>
                            <argline> -createxsdimports </argline>
                        </configuration>
                        <goals>
                            <goal>java2ws</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

в моем сгенерированном файле wsdl: поле массива MyOtherClass выглядит пустым

<xs:complexType name="myOtherClassArray">
    <xs:sequence/>
  </xs:complexType>

в чем причина, или есть какой-либо другой способ создать правильный файл wsdl, включая MyOtherClass []

Ответы [ 2 ]

1 голос
/ 26 января 2012
  1. Это очень старая версия CXF.

  2. Без аксессоров JAX-B ничего не может сделать с MyOtherClass. Попробуйте добавить публичные методы получения и установки в поля.

0 голосов
/ 14 марта 2013

Две вещи:

  1. CXF 2.5.2 java2ws не любит генерировать из интерфейсов, потому что ему нужна реализация для создания экземпляра на сгенерированном сервере.Поэтому генерируйте из класса, реализующего ваш интерфейс.

  2. Класс, реализующий MyWebService, должен быть аннотирован @ javax.jws.WebService, а метод processService () в этом классебыть аннотированным @ javax.jws.WebMethod - java2ws будет генерировать WSDL только для тех методов, которые вы хотите.Конечно, вы можете использовать import javax.jws.WebService;и просто аннотируйте с помощью @WebService и т. д.

...