Web应用程序WAR文件中包含的自定义Tomcat Valve

Dav*_*e G 6 classloader tomcat6 context.xml catalina tomcat-valve

我正在寻找实现自定义Valve并使用META-INF/context.xml进行配置.

目前,在部署期间解析context.xml时,Tomcat(6.0.32)在我的自定义Valve实现上死于ClassNotFoundException.

我的印象是我遇到了一个类加载上下文问题而且我并不是100%肯定我理解它.

是否找不到我的类,因为它位于WEB-INF/classes文件中,并且由于层次结构,Context级别类加载器无法找到该类?

提前致谢.

Fem*_*emi 8

您无法Valve从webapp类加载器中加载s.如果查看http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html,它会显示可用的类加载器.您必须使用Bootstrap,System或Common类加载器之一,因为Valve在创建单个webapp类加载器之前会处理定义:必须在Web应用程序可用之前处理Context.

将Valve自行打包在一个罐子里并将其复制到$CATALINA_HOME/lib文件夹中,你应该全部设置好.