2

我是 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 和 MyBaseType 被正确翻译为 wsdl,但 MyComplexerType 没有。我得到的大致如下:

对于 MyBaseType:

<xs:complexType abstract="true" name="myBaseType">
  <xs:sequence>
    <xs:element name="intField" type="xs:int"/>
  </xs:sequence>
</xs:complexType>

对于 MySimpleType:

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

对于 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 运行时

4

2 回答 2

0

添加

@XmlElement(required=true)

对缺失字段的注释解决了问题

于 2013-10-02T06:31:05.157 回答
0

我认为这只是一个复制粘贴错误,但您的 ComplexType 的 getter 方法的语法不正确。他们缺少()。这可能导致它们编译为字段而不是方法。如果它不仅仅是一个错字,请尝试修复方法并删除注释。

于 2013-10-01T11:28:37.790 回答