geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Wallace <rwall...@thewallacepack.net>
Subject Re: NoClassDefFoundError deployment errors
Date Fri, 17 Mar 2006 22:14:16 GMT
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
>>    'host@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    cross-context@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    valve-chain@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    tomcat-realm@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    manager@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    cluster@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0
>>    gbean-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    ejb-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    ejb-local-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    service-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    resource-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    resource-env-ref@http://geronimo.apache.org/xml/ns/naming-1.0
>>    message-destination@http://geronimo.apache.org/xml/ns/naming-1.0
>>    
>> security-realm-name@http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.0 
>>
>>    gbean@http://geronimo.apache.org/xml/ns/deployment-1.0' instead of
>>    'hidden-classes@http://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
>



Mime
View raw message