I'm looking to implement a custom Valve and configuring it using META-INF/context.xml.
At the moment though, when context.xml is parsed during deployment, Tomcat (6.0.32) dies with a ClassNotFoundException on my custom Valve implementation.
I'm under the impression that I'm running into a class loading context issue and I'm not 100% sure I understand it.
Is my class not found because it is located in the WEB-INF/classes file and the Context level class loader is unable to locate the class because of the hierarchy?
Thanks in advance.
You can not load
Valve
s from inside the webapp class loader. If you look at http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html it shows the available class loaders. You must use one of the Bootstrap, System or Common classloaders becauseValve
definitions are processed BEFORE the individual webapp classloaders are created: the Context has to be processed before the webapp is available.Package your Valve in a jar by itself and copy it into the
$CATALINA_HOME/lib
folder and you should be all set.