Unable to serialize cycle graph of object
-----------------------------------------
Key: XFIRE-362
URL: http://jira.codehaus.org/browse/XFIRE-362
Project: XFire
Type: Bug
Components: Aegis Module
Versions: 1.1-beta-1
Reporter: Jara Cesnek
Assigned to: Dan Diephouse
Priority: Blocker
@WebService(name="tst",serviceName="tst",targetNamespace="http://eno.ws.daisy.marbes.cz")
public class Test {
public static class Wstest1 {
private Wstest2 ws2;
public Wstest2 getWS2(){
return ws2;
}
}
public static class Wstest2 {
private Wstest1 ws1;
public Wstest1 getWS1(){
return ws1;
}
}
@WebMethod
public Wstest1 wstest() throws Exception {
Wstest1 ws1 = new Wstest1();
Wstest2 ws2 = new Wstest2();
ws1.ws2 = ws2;
ws2.ws1 = ws1;
return ws1;
}
}
This produce graph of object with cycle and endup with exception
2006-04-23 23:23:47,277 DEBUG http-8090-Processor2 [HandlerPipeline] Invoking
handler org.codehaus.xfire.handler.OutMessageSender in phase send
2006-04-23 23:23:47,618 ERROR http-8090-Processor2 [DispatcherServlet] Could
not complete request
org.springframework.web.util.NestedServletException: Handler processing failed;
nested exception is java.lang.StackOverflowError: null
java.lang.StackOverflowError
at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:504)
at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:575)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:384)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:124)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:178)
at
com.ctc.wstx.sw.BaseNsStreamWriter.closeStartElement(BaseNsStreamWriter.java:343)
at
com.ctc.wstx.sw.BaseNsStreamWriter.checkStartElement(BaseNsStreamWriter.java:387)
at
com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:253)
at
com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:273)
at
org.codehaus.xfire.aegis.stax.ElementWriter.writeStartElement(ElementWriter.java:116)
at
org.codehaus.xfire.aegis.stax.ElementWriter.<init>(ElementWriter.java:61)
at
org.codehaus.xfire.aegis.stax.ElementWriter.getElementWriter(ElementWriter.java:161)
at
org.codehaus.xfire.aegis.type.basic.BeanType.getWriter(BeanType.java:301)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:275)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:280)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:280)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:280)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:280)
at
org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:280)
...1000x
Xfire must maintain Set of alredy serializabled objects by equals logic and
wite only ref
(I hope this will work with hibernate proxy too).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira