Hi,
Geronimo 3.0-beta1 fails to deploy my war due to classloading problems.
Note that this war was successfully deployed on Geronimo 2.2.1 with
tomcat 6 and also on a plain tomcat 7.
My war has a web.xml with 2.3 servlet doctype and it ships some jar
libraries under WEB-INF/lib/ - most importantly, a copy of log4j.jar.
The war has a geronimo-web.xml with just an empty sys:environment
element in it.
When I try to deploy on Geronimo 3.0-beta1, I get this stacktrace:
2012-03-22 12:08:36,754 ERROR [[/myapp]] Servlet /myapp threw load()
exception
java.lang.ClassNotFoundException: org.apache.log4j.Appender
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:467)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at
org.apache.geronimo.hook.equinox.GeronimoClassLoader.loadClass(GeronimoClassLoader.java:85)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
org.apache.xbean.recipe.RecipeHelper.loadClass(RecipeHelper.java:52)
at
org.apache.xbean.recipe.ObjectRecipe.getType(ObjectRecipe.java:353)
at
org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:266)
at
org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
at
org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
at
org.apache.geronimo.j2ee.annotation.Holder.newInstance(Holder.java:178)
at
org.apache.geronimo.tomcat.TomcatInstanceManager.newInstance(TomcatInstanceManager.java:74)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1087)
at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1031)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
at
org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
at
org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Interestingly, if I remove the log4j jar, the stacktrace above is
avoided, but the same issue hits in an actual servlet initialization. It
has a slightly different error message:
2012-03-22 13:53:31,565 ERROR [DeploymentPortlet] The application was
not deployed.
Could not fully load class: com.myapp.MyFilter
due to:org/apache/log4j/Appender
in classLoader:
org.apache.geronimo.hook.equinox.GeronimoClassLoader@3c982419
java.lang.NoClassDefFoundError: Could not fully load class:
com.myapp.MyFilter
due to:org/apache/log4j/Appender
in classLoader:
I also tried adding
<sys:import-package>!org.apache.log4j.*</sys:import-package>
in geronimo-web.xml (while having the log4j jar in place in the war),
but this didn't help as ClassNotFoundException repeated.
Any suggestions how to resolve this?
Cheers,
Juho Autio