我正在尝试从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 []
答案 0 :(得分:1)
这是一个非常古老的CXF版本。
没有访问器,JAX-B无法对MyOtherClass做任何事情。尝试将公共getter和setter添加到字段中。
答案 1 :(得分:0)
两件事:
CXF 2.5.2 java2ws不喜欢从接口生成,因为它需要一个实现来在生成的服务器中实例化。因此,从实现您的界面的类生成。
实现MyWebService的类需要使用@ javax.jws.WebService进行批注,并且该类中的方法processService()需要使用@ javax.jws.WebMethod进行批注 - java2ws将仅生成WSDL你想要它的方法。你当然可以使用import javax.jws.WebService;并使用@WebService等进行注释