架构:
- spring-boot : v1.5.9
- mybatis : v3.3.1
- zookeeper : v3.3.3
- dubbo : v2.8.4
- mysql : v5.6.36
环境:
- windows 10
- jdk 8
idea 2017
问题 :
- 这是个maven项目,当我把所有的子模块跑完,再去跑web模块的时候,报异常:java.lang.StackOverflowError: null
- 通过排查,发现有一个VO类有问题,原因是类里面有一些属性包含了自己的集合,所以我怀疑是序列化的问题。
- idea 控制台:(内容太多了,我删掉了一些完全重复的行)
2017-12-26 11:19:00.844 INFO 13764 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: invokeUsingGET_14
2017-12-26 11:19:00.844 INFO 13764 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: invokeUsingGET_15
2017-12-26 11:19:01.352 WARN 13764 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
2017-12-26 11:19:01.352 INFO 13764 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
2017-12-26 11:19:01.352 INFO 13764 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans
2017-12-26 11:19:01.367 INFO 13764 --- [ main] c.a.d.r.zookeeper.ZookeeperRegistry : [DUBBO] Unsubscribe: consumer://192.168.0.141/com.hshy.pointshop.admin.api.AdminMenuService?application=application_web_admin&category=providers,configurators,routers&dubbo=2.8.4&interface=com.hshy.pointshop.admin.api.AdminMenuService&methods=getMenuById,getMenusByRoleId,update,insert,getAllMenus,delete,getMenuTree&pid=13764&revision=1.0.0&side=consumer×tamp=1514258327586&version=1.0.0, dubbo version: 2.8.4, current host: 192.168.0.141
2017-12-26 11:19:01.367 INFO 13764 --- [ main] c.a.d.r.zookeeper.ZookeeperRegistry : [DUBBO] Unsubscribe: consumer://192.168.0.141/com.hshy.pointshop.promotion.api.PromotionActionService?application=application_web_admin&category=providers,configurators,routers&dubbo=2.8.4&interface=com.hshy.pointshop.promotion.api.PromotionActionService&methods=countByExample,updateByPrimaryKeySelective,insert,deleteAction,updateByJSONObjectPrimaryKeySelective,insertSelectiveBatch,updateAction,addAction,insertByJSONObject,updateByExample,selectByPrimaryKey,updateByExampleSelective,updateByPrimaryKey,updateByRequestBody,updateByJSONObjectPrimaryKey,selectByExample,deleteByRequestBody,insertSelective,selectByExampleWithBLOBs,list,insertSelectiveByJSONObject,updateByJSONPrimaryKey,updateByExampleWithBLOBs,getPrimaryKey,insertSelectiveByJSON,selectByRequestBodyIds,selectByPrimaryKeys,deleteByExample,insertBatch,deleteByPrimaryKeys,deleteByPrimaryKey,getActionPage,insertByJSON&pid=13764&revision=1.0.0&side=consumer×tamp=1514258335067&version=1.0.0, dubbo version: 2.8.4, current host: 192.168.0.141
2017-12-26 11:19:01.367 INFO 13764 --- [ main] c.a.d.r.transport.netty.NettyChannel : [DUBBO] Close netty channel [id: 0x3dcb1fca, /192.168.0.141:50972 => /192.168.0.141:20883], dubbo version: 2.8.4, current host: 192.168.0.141
2017-12-26 11:19:01.367 INFO 13764 --- [andler-thread-1] c.a.d.rpc.protocol.dubbo.DubboProtocol : [DUBBO] disconected from /192.168.0.141:20883,url:dubbo://192.168.0.141:20883/com.hshy.pointshop.promotion.api.PromotionActionService?anyhost=true&application=application_web_admin&check=false&codec=dubbo&default.delay=-1&default.retries=2&default.timeout=60000&delay=-1&dubbo=2.8.4&generic=false&heartbeat=60000&interface=com.hshy.pointshop.promotion.api.PromotionActionService&methods=countByExample,updateByPrimaryKeySelective,insert,deleteAction,updateByJSONObjectPrimaryKeySelective,insertSelectiveBatch,addAction,updateAction,insertByJSONObject,updateByExample,selectByPrimaryKey,updateByExampleSelective,updateByPrimaryKey,updateByRequestBody,updateByJSONObjectPrimaryKey,selectByExample,deleteByRequestBody,insertSelective,selectByExampleWithBLOBs,list,insertSelectiveByJSONObject,updateByExampleWithBLOBs,updateByJSONPrimaryKey,insertSelectiveByJSON,getPrimaryKey,selectByRequestBodyIds,selectByPrimaryKeys,deleteByExample,deleteByPrimaryKeys,insertBatch,deleteByPrimaryKey,getActionPage,insertByJSON&pid=13764&revision=1.0.0&side=consumer×tamp=1514258335067&version=1.0.0, dubbo version: 2.8.4, current host: 192.168.0.141
2017-12-26 11:19:01.477 INFO 13764 --- [andler-thread-1] c.a.d.rpc.protocol.dubbo.DubboProtocol : [DUBBO] disconected from /192.168.0.141:20898,url:dubbo://192.168.0.141:20898/com.hshy.pointshop.goods.api.GoodsAttributeService?anyhost=true&application=application_web_admin&check=false&codec=dubbo&default.delay=-1&default.retries=1&default.timeout=600000&delay=-1&dubbo=2.8.4&generic=false&heartbeat=60000&interface=com.hshy.pointshop.goods.api.GoodsAttributeService&methods=countByExample,getPage,updateByPrimaryKeySelective,save,insert,delete,updateByJSONObjectPrimaryKeySelective,insertSelectiveBatch,insertByJSONObject,updateByExample,selectByPrimaryKey,updateBy,queryByCatId,updateByExampleSelective,updateByPrimaryKey,updateByRequestBody,queryByGoodsId,validate,updateByJSONObjectPrimaryKey,selectByExample,deleteByRequestBody,insertSelective,selectByExampleWithBLOBs,list,insertSelectiveByJSONObject,updateByJSONPrimaryKey,updateByExampleWithBLOBs,insertSelectiveByJSON,getPrimaryKey,selectByRequestBodyIds,getById,selectByPrimaryKeys,updateStatus,deleteByExample,deleteByPrimaryKeys,insertBatch,deleteByPrimaryKey,insertByJSON&pid=13764&revision=1.0.0&side=consumer×tamp=1514258328751&version=1.0.0, dubbo version: 2.8.4, current host: 192.168.0.141
2017-12-26 11:19:01.477 INFO 13764 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2017-12-26 11:19:01.607 ERROR 13764 --- [ost-startStop-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Failed to destroy the filter named [autoLoginFilter] of type [com.hshy.web.filter.AutoLoginFilter]
java.lang.StackOverflowError: null
at com.hshy.web.filter.AutoLoginFilter.destroy(AutoLoginFilter.java:80) ~[classes/:na]
at com.hshy.web.filter.AutoLoginFilter.destroy(AutoLoginFilter.java:80) ~[classes/:na]
2017-12-26 11:19:01.638 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [DubboRegistryFailedRetryTimer-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.638 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [ZkClient-EventThread-76-localhost:2181] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
org.I0Itec.zkclient.ZkEventThread.run(ZkEventThread.java:67)
2017-12-26 11:19:01.638 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [localhost-startStop-1-SendThread(localhost:2181)] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1107)
2017-12-26 11:19:01.638 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [localhost-startStop-1-EventThread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:502)
2017-12-26 11:19:01.638 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [DubboSaveRegistryCache-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.654 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O worker #1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.654 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O worker #2] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.654 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O worker #3] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.670 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O worker #4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.670 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O worker #5] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.670 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [New I/O boss #6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296)
sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278)
sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:409)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:206)
org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.685 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [DubboClientReconnectTimer-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.685 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [Hashed wheel timer #1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Thread.sleep(Native Method)
org.jboss.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:503)
org.jboss.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:401)
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.685 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [dubbo-remoting-client-heartbeat-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.685 WARN 13764 --- [ost-startStop-2] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [DubboSharedHandler-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
2017-12-26 11:19:01.685 INFO 13764 --- [ main] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-12-26 11:19:01.701 ERROR 13764 --- [ main] o.s.boot.SpringApplication : Application startup failed
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:50) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:348) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:151) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:114) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:880) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
at com.hshy.web.WebAdminMain.main(WebAdminMain.java:29) [classes/:na]
Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2216) ~[guava-23.5-jre.jar:na]
at com.google.common.cache.LocalCache.get(LocalCache.java:4147) ~[guava-23.5-jre.jar:na]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) ~[guava-23.5-jre.jar:na]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) ~[guava-23.5-jre.jar:na]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) ~[guava-23.5-jre.jar:na]
at springfox.documentation.spring.web.scanners.CachingOperationReader.read(CachingOperationReader.java:57) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.scanners.ApiDescriptionReader.read(ApiDescriptionReader.java:66) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:89) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:70) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.scanDocumentation(DocumentationPluginsBootstrapper.java:85) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:127) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:175) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
... 14 common frames omitted
Caused by: java.lang.StackOverflowError: null
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3775) ~[na:1.8.0_112]
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658) ~[na:1.8.0_112]
at java.util.regex.Pattern$Branch.match(Pattern.java:4602) ~[na:1.8.0_112]
at java.util.regex.Pattern$Branch.match(Pattern.java:4602) ~[na:1.8.0_112]
at java.util.regex.Pattern$Branch.match(Pattern.java:4602) ~[na:1.8.0_112]
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568) ~[na:1.8.0_112]
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717) ~[na:1.8.0_112]
at java.util.regex.Pattern$Curly.match0(Pattern.java:4279) ~[na:1.8.0_112]
at java.util.regex.Pattern$Curly.match(Pattern.java:4234) ~[na:1.8.0_112]
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658) ~[na:1.8.0_112]
at java.util.regex.Pattern$Branch.match(Pattern.java:4604) ~[na:1.8.0_112]
at java.util.regex.Pattern$Branch.match(Pattern.java:4602) ~[na:1.8.0_112]
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3798) ~[na:1.8.0_112]
at java.util.regex.Pattern$Start.match(Pattern.java:3461) ~[na:1.8.0_112]
at java.util.regex.Matcher.search(Matcher.java:1248) ~[na:1.8.0_112]
at java.util.regex.Matcher.find(Matcher.java:664) ~[na:1.8.0_112]
at java.util.Formatter.parse(Formatter.java:2549) ~[na:1.8.0_112]
at java.util.Formatter.format(Formatter.java:2501) ~[na:1.8.0_112]
at java.util.Formatter.format(Formatter.java:2455) ~[na:1.8.0_112]
at java.lang.String.format(String.java:2940) ~[na:1.8.0_112]
at springfox.documentation.spring.web.readers.parameter.ExpandedParameterBuilder.apply(ExpandedParameterBuilder.java:62) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.plugins.DocumentationPluginsManager.expandParameter(DocumentationPluginsManager.java:116) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.simpleFields(ModelAttributeParameterExpander.java:146) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand(ModelAttributeParameterExpander.java:108) ~[springfox-spring-web-2.6.0.jar:2.6.0]
at springfox.documentation.spring.web.readers.parameter.ModelAttributeParameterExpander.expand(ModelAttributeParameterExpander.java:108) ~[springfox-spring-web-2.6.0.jar:2.6.0]
- 怀疑发生问题的VO类:(重点是canChooseChildFloorList,canChooseParentFloorList,children这三个属性,删掉这3个就正常了,但是我需要父子结构来组装数据)
public class OperationFloorVO extends BaseModel<OperationFloorVO> {
private static final long serialVersionUID = 3968571768642777614L;
/** 主键 */
@ApiModelProperty(value = "主键")
private Long id;
/** 展示模板id */
@ApiModelProperty(value = "展示模板id")
private Long floorTemplateId;
/** 楼层编码 */
@ApiModelProperty(value = "楼层编码")
private String floorCode;
/** 楼层名 */
@ApiModelProperty(value = "楼层名")
private String floorName;
/** 排序 */
@ApiModelProperty(value = "排序")
private Integer sortOrder;
/** 模板名 */
@ApiModelProperty(value = "模板名")
private String templateName;
/** 描述 */
@ApiModelProperty(value = "描述")
private String floorDesc;
/** 状态 */
@ApiModelProperty(value = "状态")
private Integer status;
/** 连接url */
@ApiModelProperty(value = "连接url")
private String linkUrl;
/** 图片url */
@ApiModelProperty(value = "图片url")
private String imgUrl;
/** 父id */
@ApiModelProperty(value = "父id")
private Long parentId;
/** 是否删除(0:未删除,1:已删除) */
@ApiModelProperty(value = "是否删除(0:未删除,1:已删除)")
private Integer isDelete;
/** 创建时间 */
@ApiModelProperty(value = "创建时间")
private Date createTime;
/** 创建人 */
@ApiModelProperty(value = "创建人")
private Long createBy;
/** 更新时间 */
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/** 更新人 */
@ApiModelProperty(value = "更新人")
private Long updateBy;
/** 父楼层名 */
@ApiModelProperty(value = "父楼层名")
private String floorParentName;
/** 模板样式Html */
@ApiModelProperty(value = "模板样式Html")
private String floorTempHtml;
/** 可选模板列表 */
@ApiModelProperty(value = "可选模板列表")
private List<OperationFloorTemplateVO> floorTemplateList;
/** 1.可选子楼层列表 */
@ApiModelProperty(value = "可选子楼层列表")
private List<OperationFloorVO> canChooseChildFloorList;
/** 2.可选父楼层列表 */
@ApiModelProperty(value = "可选父楼层列表")
private List<OperationFloorVO> canChooseParentFloorList;
/** 3.已选子楼层列表 */
@ApiModelProperty(value = "已选子楼层列表")
private List<OperationFloorVO> children;
/** 图片和跳转url集合 */
@ApiModelProperty(value = "图片和跳转url集合")
private List<Map<String,String>> urlList;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFloorTemplateId() {
return floorTemplateId;
}
public void setFloorTemplateId(Long floorTemplateId) {
this.floorTemplateId = floorTemplateId;
}
public String getFloorCode() {
return floorCode;
}
public void setFloorCode(String floorCode) {
this.floorCode = floorCode;
}
public String getFloorName() {
return floorName;
}
public void setFloorName(String floorName) {
this.floorName = floorName;
}
public Integer getSortOrder() {
return sortOrder;
}
public void setSortOrder(Integer sortOrder) {
this.sortOrder = sortOrder;
}
public String getTemplateName() {
return templateName;
}
public void setTemplateName(String templateName) {
this.templateName = templateName;
}
public String getFloorDesc() {
return floorDesc;
}
public void setFloorDesc(String floorDesc) {
this.floorDesc = floorDesc;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getLinkUrl() {
return linkUrl;
}
public void setLinkUrl(String linkUrl) {
this.linkUrl = linkUrl;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public Integer getIsDelete() {
return isDelete;
}
public void setIsDelete(Integer isDelete) {
this.isDelete = isDelete;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getCreateBy() {
return createBy;
}
public void setCreateBy(Long createBy) {
this.createBy = createBy;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getUpdateBy() {
return updateBy;
}
public void setUpdateBy(Long updateBy) {
this.updateBy = updateBy;
}
public String getFloorParentName() {
return floorParentName;
}
public void setFloorParentName(String floorParentName) {
this.floorParentName = floorParentName;
}
public String getFloorTempHtml() {
return floorTempHtml;
}
public void setFloorTempHtml(String floorTempHtml) {
this.floorTempHtml = floorTempHtml;
}
public List<OperationFloorTemplateVO> getFloorTemplateList() {
return floorTemplateList;
}
public void setFloorTemplateList(List<OperationFloorTemplateVO> floorTemplateList) {
this.floorTemplateList = floorTemplateList;
}
public List<OperationFloorVO> getCanChooseChildFloorList() {
return canChooseChildFloorList;
}
public void setCanChooseChildFloorList(List<OperationFloorVO> canChooseChildFloorList) {
this.canChooseChildFloorList = canChooseChildFloorList;
}
public List<OperationFloorVO> getCanChooseParentFloorList() {
return canChooseParentFloorList;
}
public void setCanChooseParentFloorList(List<OperationFloorVO> canChooseParentFloorList) {
this.canChooseParentFloorList = canChooseParentFloorList;
}
public List<OperationFloorVO> getChildren() {
return children;
}
public void setChildren(List<OperationFloorVO> children) {
this.children = children;
}
public List<Map<String, String>> getUrlList() {
return urlList;
}
public void setUrlList(List<Map<String, String>> urlList) {
this.urlList = urlList;
}
}
- BaseModel:
public abstract class BaseModel<T> implements Serializable {
private static final long serialVersionUID = 1L;
public Map<String, Object> toMap() {
return toJSONObject();
}
public Map<String, Object> toMap(boolean ordered) {
return toJSONObject(ordered);
}
public JSONObject toJSONObject() {
return toJSONObject(false);
}
public JSONObject toJSONObject(boolean ordered) {
JSONObject jsonObject = new JSONObject(ordered);
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
try {
if (field.getName().equals("serialVersionUID")) {
continue;
}
field.setAccessible(true);
Object value = field.get(this);
jsonObject.put(field.getName(), value);
} catch (Exception e) {
throw new RuntimeException("convert JsonObject error", e);
}
}
return jsonObject;
}
@SuppressWarnings("unchecked")
public T cloneBean() {
return (T) JSON.toJavaObject(toJSONObject(), this.getClass());
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public T populate(Map map) {
JSONObject jsonObject = toJSONObject();
jsonObject.putAll(map);
return (T) JSON.toJavaObject(jsonObject, this.getClass());
}
@Override
public String toString() {
try {
return toJSONString();
} catch (Exception e) {
}
return this.toString();
}
public String toJSONString() {
return JSON.toJSONString(this);
}
}
- @wendal 大神你在哪里