我正在尝试使用log4j appender将日志发送到GrayLog2(log4j2-gelf)。所以我加我的依赖到我的pom.xml配置log4j2.xml来配置我的appender。用maven构建整个事物并将其部署到本地tomcat,并且一切正常。 当我尝试关闭tomcat时发生问题。如果我不kill -9 PID tomcat的 Tomcat不停止,catalina.out与此结束:Complete stack traceJava Tomcat,底层Netty线程不停止
什么了我的注意是
java.lang.NoClassDefFoundError: io/netty/util/concurrent/DefaultPromise$1
首先,我认为我可以有另一种依赖进口网状那会导致这个例外。但我寻找一些时间,无法找到任何其他netty导入。然后我看到:
Caused by: java.lang.ClassNotFoundException: Illegal access: this web application instance has been stopped already. Could not load [io.netty.buffer.PoolArena$1]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
而这就是我的问题即将到来的地方。 我的理解是,gelf-appender使用Netty作为与GrayLog服务器异步通信的一种方式。但它本身就是一台服务器。那么Tomcat是否有可能在杀死底层Netty之前停止父Servlet?这会导致这个问题? 我试图找到关于Tomcat关机的方式的一些文档,但到目前为止我没有找到任何东西,比我可以完全错误地关于此诊断...
+0
我已经做了一些挖掘,我似乎无法重现与码头的问题,所以这看起来像一个tomcat的问题 –