2

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

class A {
    // simple fields
    A parent;

    @XMLID
    String getID() {}

    @XMLIDRef
    A getParent() {}
}

今、私は web-method の結果として Bean を返しています。すべてが期待どおりに機能します。しかし、この Bean を入力パラメーターとしてメソッドに渡そうとすると、

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

(ここの Bean は wsimport ツールによって生成されました)

私は奇妙な振る舞いをしています。クライアントは、親オブジェクトが obj2 の参照としてのみ存在する obj2 を使用して SOAP 要求を送信します。そのため、obj2 はサーバー側で正常にデコードできず、Parentプロパティは null です。

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

4

1 に答える 1

-1

面白そうですが、あなたの質問はWebサービスとは関係がなく、マーシャリング/アンマーシャリングだけです。あなたの場合はどちらJAXBだと思います。それに応じて質問にタグを付けることをお勧めします。より適切な回答が得られると確信しています。

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

于 2012-06-27T05:49:23.087 に答える