Max*_*ask 5 java multithreading tomcat graylog2 log4j2
我正在尝试使用log4j附加程序将日志发送到GrayLog2(log4j2-gelf)。因此,我将我的依赖项添加到pom.xmlconfigure中log4j2.xml以配置我的附加程序。用maven编译整个程序并将其部署到本地tomcat,一切正常。当我尝试关闭tomcat时,会发生问题。如果我不使用Tomcat,Tomcat不会停止运行kill -9 PID,catalina.out最终结果是:完整的堆栈跟踪
引起我注意的是
java.lang.NoClassDefFoundError:io / netty / util / concurrent / DefaultPromise $ 1
首先,我认为我可能还有另一个依赖项导入netty,这将导致此异常。但是我已经找了一段时间,却找不到其他进口商品。然后我看到了:
原因:java.lang.ClassNotFoundException:非法访问:此Web应用程序实例已被停止。无法加载[io.netty.buffer.PoolArena $ 1]。出于调试目的以及试图终止导致非法访问的线程,将抛出以下堆栈跟踪。
这就是我要问的问题。我的理解是,gelf-appender使用Netty作为与GrayLog服务器异步通信的一种方式。但这是服务器本身。那么Tomcat是否有可能在杀死底层Netty之前停止了父Servlet?哪个会导致这个问题?我正在尝试查找有关Tomcat关闭的方法的文档,但是到目前为止,我什么也没找到,而且我在诊断方面完全错了……
看来您有ClassLoader问题
原因:java.lang.ClassNotFoundException:非法访问:此Web应用程序实例已被停止。无法加载[io.netty.buffer.PoolArena $ 1]。出于调试目的以及试图终止导致非法访问的线程,将抛出以下堆栈跟踪。在org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1342)
WebappClassLoader当它收到关闭信号时,停止为传入的请求提供服务。您需要可以访问Netty jar WebappClassLoader。将其放入$CATALINA_HOME/lib(请参阅Tomcat类加载器方法,“通用”部分)。要找到正确的jar,请mvn dependency:tree为您的web应用程序运行(如果使用maven)
| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |