jaxb和jax-ws中的循环引用

时间:2012-04-29 12:35:45

标签: java web-services java-ee soap

我正在使用jax-ws编写客户端和服务器。 我的一个bean有父对象的循环引用。为了防止循环我已经为我的bean使用了@XMLId和@XMLIDRef注释。

class A {
    // simple fields
    A parent;

    @XMLID
    String getID() {}

    @XMLIDRef
    A getParent() {}
}

现在我因为web方法而返回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属性为空。

所以,问题是:“我哪里错了,不懂网络服务?” 我希望客户端将发送带有对象和父对象的请求,并通过引用将它们链接起来。

1 个答案:

答案 0 :(得分:-1)

看起来很有趣,但你的问题与网络服务无关,只是与编组/解组。我猜你的情况是JAXB。我建议您相应地标记您的问题,我相信您会得到更多相关答案。

在此期间,请发布wsdl文件(用于其中的架构)以及此类A的完整源代码。