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 サービスを理解していないのですか?」ということです。
クライアントは、参照を介してリンクされるオブジェクトと親オブジェクトの両方でリクエストを送信することを期待していました。