Java jaxb和jax-ws中的循环引用

Java jaxb和jax-ws中的循环引用,java,web-services,jakarta-ee,soap,Java,Web Services,Jakarta Ee,Soap,我正在使用jax-ws编写客户机和服务器。 我的一个bean循环引用了parent。为了防止循环,我对bean使用了@XMLId和@XMLIDRef注释 class A { // simple fields A parent; @XMLID String getID() {} @XMLIDRef A getParent() {} } 现在,作为web方法的结果,我返回bean,一切都如我所期望的那样工作。 但如果我试图将这个bean作为输入参

我正在使用jax-ws编写客户机和服务器。 我的一个bean循环引用了parent。为了防止循环,我对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
属性为空

所以,问题是:“我哪里错了,不理解Web服务?”

我希望客户端会发送带有对象和父对象的请求,它们将通过refereneces链接到其中。

看起来很有趣,但您的问题与Web服务无关,只是封送/解封。在你的例子中,我想这就是JAXB。我建议你相应地标记你的问题,我相信你会得到更相关的答案


同时,请发布wsdl文件(用于其中的模式)和此类A的完整源代码。

看起来很有趣,但您的问题与Web服务无关,只是封送/解封。在你的例子中,我想这就是JAXB。我建议你相应地标记你的问题,我相信你会得到更相关的答案

同时,请发布wsdl文件(用于其中的模式)和此类A的完整源代码