我正在使用 jax-ws 编写客户端和服务器。我的一个豆子有对父母的循环引用。为了防止循环,我为我的 bean 使用了 @XMLId 和 @XMLIDRef 注释。
class A {
// simple fields
A parent;
@XMLID
String getID() {}
@XMLIDRef
A getParent() {}
}
现在,由于网络方法,我正在返回 bean,一切都按我的预期工作。但是如果我试图通过这个 bean 作为输入参数传递给方法
A obj1 = //...
A obj2 = //...
obj2.setParent(obj1);
ws.updateA(obj2); // web-method signature is updateA(A a)
(这里的bean是由wsimport工具生成的)
我有一个奇怪的行为。客户端使用 obj2 发送 SOAP 请求,其中父对象仅作为 obj2 中的引用存在。因此,obj2 不能在服务器端正常解码,并且Parent
属性为空。
所以,问题是:“我哪里错了,不了解网络服务?”
我预计客户端将发送带有对象和父对象的请求,它们将通过引用链接。