Hi All,
I am currently working hard to get a Struts 1.2.7 application to build
and deploy inside Geronimo HEAD. I've made great strides tonight in
doing so, but I've run into a problem now, and I'm not sure what's
happening. I've bundled all of the struts .jar files and dependecies in
my WEB-INF/lib directory inside my .WAR file. I have a bunch of Struts
Actions compiled and their classes are written to the WEB-INF/classes
directory. My struts based .jsps seem to execute fine, and as long as I
don't access and Struts Action classes, I'm fine. But when I do access a
struts action, I get the error:
HTTP ERROR: 500
org/apache/struts/action/Action
RequestURI=/phonebook/Hello.do
/Powered by Jetty:// <http://jetty.mortbay.org>
/
And the console emits the following stack trace:
23:16:16,101 WARN [ServletHandler] Error for /phonebook/Hello.do
java.lang.NoClassDefFoundError: org/apache/struts/action/Action
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at
org.apache.geronimo.jetty.JettyClassLoader.loadClass(JettyClassLoader
.java:59)
at
org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.jav
a:117)
at
org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.
java:143)
at
org.apache.struts.action.RequestProcessor.processActionCreate(Request
Processor.java:280)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:218)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
4)
at
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427
)
at
org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolde
r.java:92)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(
WebApplicationHandler.java:832)
at
org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:171
)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(
WebApplicationHandler.java:823)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicati
onHandler.java:473)
at
org.mortbay.jetty.servlet.Dispatcher.dispatch(Dispatcher.java:272)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:169)
at
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.
java:1063)
at
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestP
rocessor.java:263)
at
org.apache.struts.action.RequestProcessor.processForwardConfig(Reques
tProcessor.java:386)
at
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(Ti
lesRequestProcessor.java:318)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:229)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
4)
So what I find freaky about this stack trace is that near the bottom,
org.apache.struts.action stuff starts appearing indicating to me that
the struts classes are being found, I think. Is there, perhaps, a
conflicting Jar inside the Geronimo repository? Is there a way to make
the Geronimo classloader only load from within the web application .WAR
scope? Any ideas what I'm doing wrong?
Thanks tons, if you can help me.
Cheers.
-Neal
//