David Jencks wrote:
I think <hidden-classes/> should be the first element inside <web-app>. If it's already there and our attempts to improve your xml document are moving it, please let us know :-)


You are correct, I didn't have the hidden-classes element first in the
file.  I moved it there and it deploys now.  But I'm still getting the
error from Commons Logging that I have more than one version available
which is not allowed.  Here's my actual geronimo-web.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
 xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0";
 configId="MPLCommon">

<hidden-classes><filter>org.apache.commons.logging</filter></hidden-classes>
 <context-root>/mpl</context-root>
 <context-priority-classloader>true</context-priority-classloader>
</web-app>

Any ideas?

Thanks,
Rich

thanks
david jencks

On Mar 17, 2006, at 1:19 PM, Richard Wallace wrote:

David Jencks wrote:

On Mar 17, 2006, at 9:23 AM, Richard Wallace wrote:

Greetings all,

I'm new to Geronimo. I'm trying to deploy one of my web applications that had previously just been deployed in a standalone tomcat container in Geronimo 1.0. I've tried this with both the version with Jetty and with Tomcat bundled. The web app uses a Hibernate/Spring/JSF framework stack. The jars for each project are bundled in the war file in the WEB-INF/lib directory. But when I deploy the application I'm getting NoClassDefFoundErrors for javax/faces/el/VariableResolver and org/hibernate/HibernateException.

Any ideas what I'm missing here?

My first guess is that a copy of spring included in geronimo is getting used in your web app instead of the copy you are trying to use: when our copy tries to load the faces/hibernate classes it can't find them. If this is the problem you should be able to fix it by adding spring and hibernate to the hidden classes list in your geronimo plan for your application.

I think the xml syntax would be (consult modules/service-builder/src/schema/geronimo-config-1.0.xsd, this is also somewhere in the distribution such as schema/....)

<hidden-classes>
   <filter>javax.faces.el.</filter>
</hidden-classes>
<hidden-classes>
   <filter>org.hibernate.</filter>
</hidden-classes>

I regard the need for multiple hidden-classes elements as a bug in the schema, and it is fixed in 1.1 (which doesn't work right now) (but not yet in 1.2, it will be fixed there when we merge in 1.1)

Ok, while trying that I saw the context-priority-classloader element which should load stuff from the web app classloader before any of the parent classloaders. I set this to true and tried to deploy. I don't get any messages about javax.faces or org.hibernate now, but I am getting this now:

org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed.


So, I tried to hide the parent classloaders org.apache.commons.logging with

<hidden-classes><filter>org.apache.commons.logging</filter></hidden-classes>

But now Geronimo says there's a problem with my deployment descriptor:

   Error: Unable to distribute mpl.war: xml problem

       Invalid deployment descriptor: [error: cvc-complex-type.2.4a:
   Expected elements
   '[EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/naming-1.0
[EMAIL PROTECTED]://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
   [EMAIL PROTECTED]://geronimo.apache.org/xml/ns/deployment-1.0' instead of
   '[EMAIL PROTECTED]://geronimo.apache.org/xml/ns/deployment-1.0'
   here]

   Descriptor: <xml-fragment configId="MPLCommon"
   xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.0";
   xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.0";
   xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1";
   xmlns:tom="http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0";>

     <tom:context-root>/mpl</tom:context-root>


<tom:context-priority-classloader>true</tom:context-priority-classloader>

     <sys:hidden-classes>

       <sys:filter>org.apache.commons.logging</sys:filter>

     </sys:hidden-classes>

   </xml-fragment>

From what I can tell, according to the docs and the schema this should be alright. So what am I missing now?

Thanks,
Rich



Reply via email to