我是JAX-WS的新手,我有以下情况:
服务:
public class MyService {
@WebMethod()
public @WebResult MyBaseClass getBaseClassById(@WebParam(name="id") int id){
}
}
MyBaseClass和层次结构:
@XmlSeeAlso({MySimpleType.class, MyComplexerType.class})
public abstract class MyBaseClass {
private int intField;
public int getIntField() { return intField; }
}
public class MySimpleType {
private String stringField;
public String getStringField() { return stringField; }
}
public class MyComplexerType {
private String[] stringArray;
private List<String> stringList;
public String[] getStringArray(){ return stringArray; }
public List<String> getStringList(){return stringList; }
}
我运行服务MySimpleType&amp; MyBaseType被正确转换为wsdl,但MyComplexerType没有。我得到的大致如下:
对于MyBaseType:
<xs:complexType abstract="true" name="myBaseType">
<xs:sequence>
<xs:element name="intField" type="xs:int"/>
</xs:sequence>
</xs:complexType>
for MySimplerType:
<xs:complexType name="mySimpleType">
<xs:complexContent>
<xs:extension base="tns:myBaseType">
<xs:sequence>
<xs:element minOccurs="0" name="stringField" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
for MyComplexerType:
<xs:complexType name="myComplexerType">
<xs:complexContent>
<xs:extension base="tns:myBaseType">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
我做错了什么?如何将List和String []字段转换为WSDL?我正在使用JBoss 7.1.1.Final runtime
答案 0 :(得分:0)
我认为这只是一个复制粘贴错误,但是ComplexType的getter方法语法不正确。他们错过了()。这可能导致它们编译为字段而不是方法。如果它不只是一个拼写错误尝试修复方法并删除注释。
答案 1 :(得分:0)
添加
@XmlElement(required=true)
缺少字段的注释解决了问题