WSDL中缺少信息(JAX-WS运行时)

时间:2013-10-01 10:47:25

标签: java web-services jboss wsdl jax-ws

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

添加

@XmlElement(required=true)

缺少字段的注释解决了问题