我希望实现自定义 Valve 并使用 META-INF/context.xml 对其进行配置。
但目前,在部署期间解析 context.xml 时,Tomcat (6.0.32) 在我的自定义 Valve 实现上因 ClassNotFoundException 而死亡。
我的印象是我遇到了类加载上下文问题,但我不是 100% 确定我理解它。
是不是因为我的类位于 WEB-INF/classes 文件中而找不到我的类,而上下文级别的类加载器由于层次结构而无法定位该类?
提前致谢。
最佳答案
您无法加载 Valve
s 来自 webapp 类加载器。如果你看 http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html它显示了可用的类加载器。您必须使用 Bootstrap、System 或 Common 类加载器之一,因为 Valve
在创建单个 webapp 类加载器之前处理定义:必须在 webapp 可用之前处理上下文。
将您的 Valve 单独包装在一个 jar 中,并将其复制到 $CATALINA_HOME/lib
文件夹,你应该都设置好了。
关于tomcat6 - Web 应用程序 WAR 文件中包含的自定义 Tomcat Valve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138396/