我正在寻找实现自定义 Valve 并使用 META-INF/context.xml 对其进行配置。
但目前,当在部署期间解析 context.xml 时,Tomcat (6.0.32) 在我的自定义 Valve 实现中因 ClassNotFoundException 而死。
我的印象是我遇到了类加载上下文问题,我不是 100% 确定我理解它。
找不到我的类,因为它位于 WEB-INF/classes 文件中,并且上下文级别的类加载器由于层次结构而无法找到该类?
提前致谢。
我正在寻找实现自定义 Valve 并使用 META-INF/context.xml 对其进行配置。
但目前,当在部署期间解析 context.xml 时,Tomcat (6.0.32) 在我的自定义 Valve 实现中因 ClassNotFoundException 而死。
我的印象是我遇到了类加载上下文问题,我不是 100% 确定我理解它。
找不到我的类,因为它位于 WEB-INF/classes 文件中,并且上下文级别的类加载器由于层次结构而无法找到该类?
提前致谢。
您不能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
文件夹中,您应该已准备就绪。