6

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

但目前,当在部署期间解析 context.xml 时,Tomcat (6.0.32) 在我的自定义 Valve 实现中因 ClassNotFoundException 而死。

我的印象是我遇到了类加载上下文问题,我不是 100% 确定我理解它。

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

提前致谢。

4

1 回答 1

10

您不能Valve从 webapp 类加载器中加载 s。如果您查看http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html,它会显示可用的类加载器。您必须使用 Bootstrap、System 或 Common 类加载器之一,因为Valve定义是在创建单个 webapp 类加载器之前处理的:必须在 webapp 可用之前处理上下文。

将您的 Valve 单独打包到一个罐子中,然后将其复制到$CATALINA_HOME/lib文件夹中,您应该已准备就绪。

于 2011-05-26T12:58:29.330 回答