无法使用cxf-java2ws-plugin生成正确的wsdl

时间:2012-01-26 13:39:58

标签: java wsdl cxf

我正在尝试从MyWebService接口生成一个wsdl文件;

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 个答案:

答案 0 :(得分:1)

  1. 这是一个非常古老的CXF版本。

  2. 没有访问器,JAX-B无法对MyOtherClass做任何事情。尝试将公共getter和setter添加到字段中。

答案 1 :(得分:0)

两件事:

  1. CXF 2.5.2 java2ws不喜欢从接口生成,因为它需要一个实现来在生成的服务器中实例化。因此,从实现您的界面的类生成。

  2. 实现MyWebService的类需要使用@ javax.jws.WebService进行批注,并且该类中的方法processService()需要使用@ javax.jws.WebMethod进行批注 - java2ws将仅生成WSDL你想要它的方法。你当然可以使用import javax.jws.WebService;并使用@WebService等进行注释