org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite r 电玩女神 2022-06-05 00:22 258阅读 0赞 org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.snaker.engine.model.StartModel\["outputs"\]->java.util.ArrayList\[0\]->org.snaker.engine.model.TransitionModel\["source"\]->org.snaker.engine.model.StartModel\["outputs"\]) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:293) at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:106) at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:863) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:650) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:559) at com.myflow.util.RestUtil.Rest(RestUtil.java:45) at com.myflow.util.WorkflowUtil.callBack(WorkflowUtil.java:364) at com.myflow.service.workflow.WorkflowService.submit(WorkflowService.java:270) at com.myflow.service.workflow.WorkflowService$$FastClassBySpringCGLIB$$2ac6ade7.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) at com.myflow.service.workflow.WorkflowService$$EnhancerBySpringCGLIB$$e8fc5d35.submit(<generated>) at test.workflowTest.flowTest.submit(flowTest.java:128) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104) at org.testng.internal.MethodInvocationHelper$1.runTestMethod(MethodInvocationHelper.java:205) at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.run(AbstractTestNGSpringContextTests.java:175) at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:217) at org.testng.internal.Invoker.invokeMethod(Invoker.java:641) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) at org.testng.TestRunner.privateRun(TestRunner.java:756) at org.testng.TestRunner.run(TestRunner.java:610) at org.testng.SuiteRunner.runTest(SuiteRunner.java:387) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293) at org.testng.TestNG.runSuitesLocally(TestNG.java:1218) at org.testng.TestNG.runSuites(TestNG.java:1133) at org.testng.TestNG.run(TestNG.java:1104) at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123) 解决办法: 1.发生以上情况,RequestBody序列化出现问题,多出现在后台接受前台序列化数据,或者Rest接口数据上。可以对接受的数据对象进行测试,排除掉可能存在问题的属性。在javabean中将出现问题的属性的get和set方法去掉前面的get和set部分即可。 原因,javabean序列化存在局限,当属性内部过于复杂,序列化将会发生异常,而序列化javabean数据默认会通过get和set方法来辨别,所以去掉get和set方法就避免了该属性被序列化。 public ProcessConfig getProcesssConfig() { return processsConfig; } public void setProcesssConfig(ProcessConfig processsConfig) { this.processsConfig = processsConfig; } public List<Task> nextTask() { return nextTask; } public void nextTask(List<Task> nextTask) { this.nextTask = nextTask; }
还没有评论,来说两句吧...