2012-04-29 2 views
2

jax-wsを使用してクライアントとサーバーを作成しています。 私の豆の1つに、親に対する循環参照があります。サイクルを防ぐために、私は@ beanと@XMLIDRefアノテーションを使用しました。jaxbとjax-wsの循環参照

class A { 
    // simple fields 
    A parent; 

    @XMLID 
    String getID() {} 

    @XMLIDRef 
    A getParent() {} 
} 

ここで私はWebメソッドの結果としてbeanを返しています。私はすべて期待通りに動作します。 しかし、私は

A obj1 = //... 
A obj2 = //... 
obj2.setParent(obj1); 
ws.updateA(obj2); // web-method signature is updateA(A a) 

(ここではwsimportのツールによって生成された豆)

私は奇妙な行動を取得しています経由でメソッドへの入力パラメータとして、このBeanを渡すようにしようとしている場合。クライアントは、親オブジェクトがobj2の参照としてのみ存在するobj2を使用してSOAPリクエストを送信します。 obj2はサーバー側で正常にデコードできず、Parentプロパティはnullです。

質問: "どこが間違っていて、ウェブサービスを理解できないのですか?"
私はクライアントが参照オブジェクトを介してリンクされるオブジェクトと親オブジェクトの両方でリクエストを送信することを期待しました。

答えて

-1

面白いですが、あなたの質問はマーシャリング/アンマーシャリングだけでwebservicesとは関係ありません。あなたの場合はJAXBと思います。私はそれに応じてあなたの質問にタグを付けることをお勧めします、私はあなたがより関連性の高い答えを得るでしょう。

その間にwsdlファイル(スキーマ用)とこのクラスの完全なソースを投稿してください。