geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rogue angel <>
Subject Re: Geronimo sees jars in servlet, but in any object created within this servlet throws NoClassDefFoundError
Date Tue, 24 Feb 2009 11:59:19 GMT

The problem was in log4j JMSAppender. When i tried to create an instance a
ClassDefFound error thowed. I think geronimo some how looks in jars versions
and rejects some of them.

My solution:
I created exact copy of JMSAppender in my project but with other name and
extends it and it`s works!

It would be helpful if some one will explain the issue reason.

djencks wrote:
> I'm hoping someone else will have time to investigate this in more  
> detail.
> I suspect you left out the next bit of stack trace which would show a  
> log4j class trying to load the Connection class.  This will fail  
> because the log4j classes are loaded in a classloader very near or at  
> the root of the classloader graph and certainly don't have and javaee  
> spec classes such as jms available.
> I think people have dealt with this problem before and it would be  
> great to have a wiki page on what to do (if we don't already).
> One solution is to hide all the log4j classes from your app using the  
> hidden-classes plan element and include a copy of  log4j in your app.
> It may also be possible to just hide the jms appender classes and  
> include those in your app.
> hopefully this will point you in a useful direction.
> thanks
> david jencks
> On Feb 23, 2009, at 8:31 AM, Rogue angel wrote:
>> Hello everyone!
>> I`m lost with geronimo 2.1.1! Situation:
>> I have a Geronimo 2.1.1 (on 2.1.3 the same problem). I need to  
>> register my
>> logger in geronimo wich extendeds standart JMSAppender. Within tests
>> everything with JMS messaging works just fine. I followed the guide to
>> connect JMS applications in Geronimo, described in the wiki. Example
>> application works just fine. BUT when i added my logger it breaks.  
>> Example
>> application throws exception on line with extended appender:
>> 17:53:25,031 ERROR [[RegisterServlet]] Servlet.service() for servlet
>> RegisterServlet threw exception
>> java.lang.NoClassDefFoundError: javax/jms/Connection
>>        at webbjms.RegisterServlet.doGet(
>>        at javax.servlet.http.HttpServlet.service(
>>        at javax.servlet.http.HttpServlet.service(
>>        at
>> org 
>> .apache 
>> .catalina 
>> .core 
>> .ApplicationFilterChain.internalDoFilter( 
>> 290)
>>        at
>> org 
>> .apache 
>> .catalina 
>> .core.ApplicationFilterChain.doFilter(
>>    ..............
>> So, before line with constructor javax/jms/Connection exists and in  
>> this
>> line it vanishes. 0_o
>> Have you ever seen situation when classes are visible within  
>> servlet, but
>> not visible in any other classes called in this servlet?
>> I tried:
>> - add jars into lib folder
>> - check jar versions, for both extended appender and example  
>> application is
>> equal.
>> - deployed jars into geronimo repository
>> Question: How to make any other class, except called servlet, to see  
>> jar
>> with Connection class in Geronimo?
>> Here is zip with test application and code
>> In this example: UserServlet and AdminServlet are example application,
>> RegisterServlet - example application with registering appender and  
>> throws
>> NoClassDefFoundError.
>> -- 
>> View this message in context:
>> Sent from the Apache Geronimo - Users mailing list archive at  

View this message in context:
Sent from the Apache Geronimo - Users mailing list archive at

View raw message