2009-11-14 10 views
8

Webサービスの呼び出しの結果として返されるWebServiceは、 "CustomerResponse"というResponseObjectを持っています。このオブジェクトを "ゼロから"実装すると、すべて正常に動作します。この場合の実装では、文字列、整数などの必要な「単純型」のみがすべて含まれていますが、オブジェクト参照/関連付けはありません。JAX-WS:継承されたレスポンス・オブジェクト(WSレスポンス)の「メンバー/フィールド」を除外する方法は?

しかし、私がやりたいことは、既存のオブジェクトを「再利用」することです。ドメインモデルには、アプリケーション自体で使用される "Customer"オブジェクトがあります。代わりに、愚か多かれ少なかれ「CustomerReponse」オブジェクト(手動で再びすべてのメンバー/フィールドを入力して)、私は拡張子によってCustomerオブジェクト上CutomerResponseオブジェクトをベースたかっにCustomerのクローニング:

class CustomerResponse extends Customer 

== >問題は今、CustomerResponseに、Webサービスを介して公開したくないCustomerオブジェクト(DatabaseID、Security-Stuffなど)から継承されたいくつかの「内部」フィールドが含まれていることです。さらに、Customerには、AddressOrdersHistoryのような他のオブジェクトに対する「オブジェクト参照/関連付け」がたくさん含まれています(Apache CXFの "評価」)...全体ObjectgraphをしてResponseObjectに含めるしようと

==>それがすることは可能です 『のメンバー/フィールド『』一部を除外し、既存のオブジェクトに基づいてWebサービスのレスポンスオブジェクトを何とか』拡張拡張されたスーパータイプですか?(したがって、DatabseIDなどの一部のメンバーと、(住所/注文/ヒストロイ)などの「オブジェクトの関連付け」のすべてを除外したいと考えています。 注釈と手順はどうすれば実現できますか?

ありがとうございます! Jan

答えて

6

@XmlTransientアノテーションは、表示したくないメンバーを非表示にするために使用します。これらのメンバーに注釈を付けることができなければなりません。または、@ XmlAccessorTypeをXmlAccessType.NONEに変更し、特に注釈付きのメソッドだけをXMLにバインドします。

+0

こんにちはKT、ありがとうございます。まあ、実際に@XMLTransientを試しましたが、何とかしていませんでした。それにもかかわらず、Apache CXFはWebサービスのロード時にobjectgraphを少なくとも「クロール」していくつかの例外をスローしたように見えました(My objectgraphには同じ静的列挙型の内部静的な名前がいくつかあります...)。 ! – jan

-7

C#はこの問題を部分クラスで解決します。私はjax-wsでそれをやる方法を知らない。

10

@ XmlTransientアノテーションに関しては、非表示にするフィールドのgetterメソッドに配置する必要があることがわかりました。

public class InputBean 
{ 
    private String fieldShow; 
    private transient String fieldHide; 

    public String getFieldShow() { 
     return fieldShow; 
    } 

    public void setFieldShow(String fieldShow) { 

     this.fieldShow = fieldShow; 
    } 

    @XmlTransient 
    public String getFieldHide() { 
     return fieldHide; 
    } 

    public void setFieldHide(String fieldHide) { 
     this.fieldHide = fieldHide; 
    } 
} 

この例では、「fieldHide」はサービスxsdには表示されません。

+0

良い点あなたのフィールドには 'transient'とゲッタには' @XmlTransient'が必要です。 –

+1

'transient'なしで私のために働きました – Julien

+0

ブール型では動作しません。 –

関連する問題