2012-02-14 11 views
0

クライアントから入手した大きなwsdlに基づいてapache cxfでクラスのセットを生成しました。これはanyTypeを使用して、さまざまな種類の束を含むようにします。これは、WSDLJava Webサービスで拡張クラスを使用するにはどうすればいいですか

<complexType name="PayloadBase"> 
    <complexContent> 
     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> 
     </restriction> 
    </complexContent> 
</complexType> 

である。これは、次のJavaコード

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "PayloadBase") 
public class PayloadBase { 

    // empty as you can see 

} 

に変換するには、このクラスのdoesntの子を使用したい任意のクラスは、それを操作する方法を知っていることが判明しました。例えば、PayloadBaseのサブクラスはまた、タイムスタンプが含まれている包装オブジェクトに追加され、次のXMLは

<bericht timestamp="2012-02-14T16:03:34.331+01:00"><payload/></bericht> 

生成される。これは、Webサービス・コード

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "BerichtDescription", propOrder = { 
    "payload" 
}) 
public class BerichtDescription { 

    @XmlElement(required = true) 
    protected PayloadBase payload; 
    @XmlAttribute(name = "timestamp", required = true) 
    @XmlSchemaType(name = "dateTime") 
    protected XMLGregorianCalendar timestamp; 
を通して以下のクラスを送信した結果である、と言います

使用されたPayloadBaseのインスタンスは、結果のxmlに決して表示されません。私は、ペイロードベースのインスタンスが実際にコンテンツで満たされていることをデバッガで確認しました。この設定でjava webservicesを動作させるにはどうすればよいですか?

+0

私はそう思う、[この返信](http://stackoverflow.com/a/4305288/267197)は正しい方向です。完全なソリューションが必要な場合は、質問に異なるペイロードを持つ2つのXMLサンプルを提供してください。 –

答えて

1

最後に、@XmlSeeAlso注釈をすべてのサブクラスのPayloadBaseクラスに追加することになりました。

関連する問題