com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML

简介: com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML

错误如下所示:

javax.xml.ws.soap.SOAPFaultException: Marshalling Error: 在对象图中检测到循环。这将产生无限深的 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: 在对象图中检测到循环。这将产生无限深的 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

惊不惊喜,意不意外,当头一棒就给我报这个!!

   今天在项目中做了一下web服务,采用的三大框架的hibernate+spring   ,只是写个简单的案例,所以就没有使用struts2,然而写完之后报错。。。。

  错误的意思也描述的很详细了,但是就是不知道从何解决起,千般苦万般难的终于找到了,我是写的查询dept表,但是dept表里面有个emps的集合,也就是查询dept的时候顺便把emp查询出来,菜刀自了这个错误!解决如下:

   在实体类dept的

public Set<Emp> getEmps() {
       return emps;
   }


上面加一个@XmlTransient注解就OK了,正确的代码如下:

@XmlTransient
   public Set<Emp> getEmps() {
       return emps;
   }


相关文章
|
6月前
|
XML Java 数据格式
Java一分钟之-JAXB:Java对象到XML绑定
【6月更文挑战第1天】Java Architecture for XML Binding (JAXB) 是Java平台标准,用于自动转换Java对象和XML。它通过注解实现声明式映射,简化XML处理。本文介绍了JAXB的基本使用、常见问题和最佳实践,包括对象到XML(Marshalling)和XML到对象(Unmarshalling)过程,并通过示例展示如何在Java类和XML之间进行转换。注意类型匹配、注解冲突和JAXB上下文创建等问题,以及如何优化性能和避免循环引用。
398 3
|
7月前
|
SQL Java 关系型数据库
Hibernate - 对象关系映射文件(*.hbm.xml)详解
Hibernate - 对象关系映射文件(*.hbm.xml)详解
303 1
|
7月前
|
XML JavaScript Java
Spring5源码(16)-Spring将Xml文件解析为Document对象
Spring5源码(16)-Spring将Xml文件解析为Document对象
68 0
|
XML 数据格式
|
XML Java 数据格式
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
关于使用JAXB读取xml文档转换为java对象出现非法注解异常
|
XML Java 数据格式
xml与java对象的快速互转
做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转 查了一下activiti的转换xml方式,发现转换太麻烦了,需要一步步的解析xml 后面发现直接用jaxb就可以很快实现互转,而且现在这个jaxb在jdk内,不需要引入外部的解析xml的包 具体如下: 一.
2303 0
|
XML 数据格式
使用XStream进行对象和xml的转换,极度舒适
使用XStream进行对象和xml的转换,极度舒适
161 0
|
JSON Java 数据格式
SSM的整合及spring-config.xml文件的配置信息,时间日期转换器、Json对象注解配置
SSM的整合及spring-config.xml文件的配置信息,时间日期转换器、Json对象注解配置
139 0
|
XML JSON IDE
C#复杂XML反序列化为实体对象两种方式 (上)
C#复杂XML反序列化为实体对象两种方式
233 0
C#复杂XML反序列化为实体对象两种方式 (上)
|
XML 数据格式
hutool XML转对象
hutool XML转对象