com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML
錯(cuò)誤如下所示:
javax.xml.ws.soap.SOAPFaultException: Marshalling Error: 在對(duì)象圖中檢測(cè)到循環(huán)。這將產(chǎn)生無限深的 XML: org.entity.Dept@5e54a99b -> org.entity.Emp@72433225 -> org.entity.Dept@5e54a99b
?? ?at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:158)
?? ?at $Proxy44.getDepts(Unknown Source)
?? ?at org.service.IDeptServiceTest.test(IDeptServiceTest.java:18)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
?? ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
?? ?at java.lang.reflect.Method.invoke(Method.java:597)
?? ?at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
?? ?at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
?? ?at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
?? ?at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
?? ?at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
?? ?at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
?? ?at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
?? ?at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
?? ?at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
?? ?at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
?? ?at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
?? ?at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
?? ?at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
?? ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
?? ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
?? ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
?? ?at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.apache.cxf.binding.soap.SoapFault: Marshalling Error: 在對(duì)象圖中檢測(cè)到循環(huán)。這將產(chǎn)生無限深的 XML: org.entity.Dept@5e54a99b -> org.entity.Emp@72433225 -> org.entity.Dept@5e54a99b
?? ?at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84)
?? ?at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51)
?? ?at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40)
?? ?at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
?? ?at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
?? ?at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
?? ?at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
?? ?at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
?? ?at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:849)
?? ?at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1642)
?? ?at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1520)
?? ?at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1317)
?? ?at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
?? ?at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
?? ?at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
?? ?at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
?? ?at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:572)
?? ?at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:481)
?? ?at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
?? ?at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
?? ?at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
?? ?at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136)
?? ?... 25 more
驚不驚喜,意不意外,當(dāng)頭一棒就給我報(bào)這個(gè)!!
??? 今天在項(xiàng)目中做了一下web服務(wù),采用的三大框架的hibernate+spring?? ,只是寫個(gè)簡(jiǎn)單的案例,所以就沒有使用struts2,然而寫完之后報(bào)錯(cuò)。。。。
?? 錯(cuò)誤的意思也描述的很詳細(xì)了,但是就是不知道從何解決起,千般苦萬般難的終于找到了,我是寫的查詢dept表,但是dept表里面有個(gè)emps的集合,也就是查詢dept的時(shí)候順便把emp查詢出來,菜刀自了這個(gè)錯(cuò)誤!解決如下:
??? 在實(shí)體類dept的
public Set<Emp> getEmps() {
?? ??? ?return emps;
?? ?}
上面加一個(gè)@XmlTransient注解就OK了,正確的代碼如下:
@XmlTransient
?? ?public Set<Emp> getEmps() {
?? ??? ?return emps;
?? ?}
總結(jié)
以上是生活随笔為你收集整理的com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 低配电脑能带起来的恐怖游戏?
- 下一篇: javaWeb服务详解(含源代码,测试通