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>

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>

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

これは単なるコピー ペースト エラーだと思いますが、ComplexType の getter メソッドの構文が正しくありません。() がありません。これにより、メソッドではなくフィールドとしてコンパイルされる可能性がありました。単なるタイプミスではない場合は、メソッドを修正して注釈を削除してみてください。

于 2013-10-01T11:28:37.790 に答える