Having noted the changes in class loading behavior for version 3.0.0:
http://www.jboss.org/modules/bb/index.html?module=bb&op=viewtopic&t=forums/ would like to accomplish the following w.r.t. deployment.
- Deploy any common *utility* jars to the /deploy directory so that they can be utilized by multiple webapps .
[If I understand the refrenced thread correctly, "hot deployed" jars that are dropped into the /deploy directory should be available to all wars, ears, etc. deployed in the same fashion.]
- Exclude the common *utility* jars from the /WEB-INF/lib of each webapp.
[Again, from the referenced thread... if the utility jars are available to all deployed wars, ears, etc., there is no need to include them in the /WEB-INF/lib of multiple webapps.]
However, when I attempt to deploy my app in this manner, I experience a class loading problem (ClassNotFoundException) with one of my webapp-specific classes that extends from a class in one of the utility jars.
Note: Stack trace attached.
1. Should the statements in the referenced thread hold true when using Tomcat as the Servlet/JSP container?
2. If so, why is Tomcat unable to find the app-specific class (since the class itself is visible in the /WEB-INF/classes under the catalina/work directory AND the common *utility* jar has been "hot deployed"?
Moan to the struts project.
Struts uses Class.forName()
It should use Thread.currentThread().getContextClassloader().loadClass()
This means it will only use Tomcat's application
classloader if you put the struts jars in WEB-INF/lib