Actually, I rewrote my xmls with the dep: thing.
ger-app.xml

<application 
       xmlns="http://java.sun.com/xml/ns/j2ee";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       http://java.sun.com/xml/ns/j2ee/application_1_4.xsd";
       version="1.4">
       configId="efxRootConfig"
       inverseClassloading="true"
       application-name="efx"       
       >
   <dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1";>
     <dep:moduleId>
       <dep:groupId>efx</dep:groupId>
       <dep:artifactId>efx</dep:artifactId>
       <dep:version>1.0</dep:version>
       <dep:type>car</dep:type>
     </dep:moduleId>

     <dep:dependencies/>

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

   </dep:environment>       
    <module>
            <web>
            <web-uri>chapel.war</web-uri>
                <context-root>/chapel</context-root>
        </web>
        </module>
</application>

ger-web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1";
   xmlns:naming="http://geronimo.apache.org/xml/ns/naming";>
   
   <dep:environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1";>
                <dep:moduleId> 
                        <dep:groupId>geronimo</dep:groupId>
                        <dep:artifactId>chapel</dep:artifactId>
                        <dep:version>1.1</dep:version> 
                        <dep:type>war</dep:type> 
                </dep:moduleId>
        </dep:environment>
        <context-root>/chapel</context-root>
</web-app>


-----Original Message-----
From: Poulin, Maxime [mailto:[EMAIL PROTECTED] 
Sent: Thursday, November 30, 2006 3:12 PM
To: [email protected]
Subject: RE: Log4j problem with my ear - more generally a class loader
question.

Well I tried it but this is what I get :
--
log4j:WARN No appenders could be found for logger
(com.zerobase.chaplin.ChaplinStartupListener).
log4j:WARN Please initialize the log4j system properly.
--- 

Really don't get it.

Here is the structure :
chapel (webapp) ->
        Has three libraries :
        chaplin-common.jar
        chaplin-fx.jar
        struts.jar
The startup listener (see trace above) is in chaplin-common.jar . It
performes the init call for log4j.

the ear contains all the jars for the business logic and architecture.
chaplin-common.jar and chaplin-fx.jar need the jars from the ear to
work. Including the zbutils.jar which contains my appender and actually
all the real log4j initialization.

here are my xmls :
geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 
        xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"; 
        xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1"; 
        xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1"; 
        xmlns:security="http://geronimo.apache.org/xml/ns/security-1.1";

        >
  
        <environment
xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1";>
                <moduleId> 
                        <groupId>geronimo</groupId>
                        <artifactId>chapel</artifactId>
                        <version>1.1</version> 
                        <type>war</type> 
                </moduleId>
        </environment>
        <context-root>/chapel</context-root>
  
</web-app>


and my geronimo-application.xml:

<application 
       xmlns="http://java.sun.com/xml/ns/j2ee";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       http://java.sun.com/xml/ns/j2ee/application_1_4.xsd";
       version="1.4">
       configId="efxRootConfig"
       inverseClassloading="true"
       application-name="efx"       
       >
    <environment>
            <module>
            <web>
                    <web-uri>chapel.war</web-uri>
                <context-root>/chapel</context-root>
                </web>
        </module>
                <hidden-classes>
            <filter>org.apache.commons.logging</filter>
            <filter>org.apache.log4j</filter>
                </hidden-classes>       
    </environment>
       
</application>


Sub-question, this is a naive one. Why do you use dependencies for all
your tags ? (Precision: I've been working mostly on websphere to change
our web application into an enterprise application and now I am working
on the same thing for geronimo so I am quite new on this container).

Max.

-----Original Message-----
From: David Jencks [mailto:[EMAIL PROTECTED]
Sent: Thursday, November 30, 2006 12:56 PM
To: [email protected]
Subject: Re: Log4j problem with my ear - more generally a class loader
question.

The first thing to try is to use the hidden-classes element in your
geronimo deployment plan to not import geronimo's log4j and commons-
logging classes.

Your geronimo-application.xml plan should start something like this:

<application xmlns="http://geronimo.apache.org/xml/ns/j2ee/
application-1.1">
   <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/
deployment-1.1">
     <dep:moduleId>
       <dep:groupId>org.chapel</dep:groupId>
       <dep:artifactId>Chapel-jetty</dep:artifactId>
       <dep:version>1.0-SNAPSHOT</dep:version>
       <dep:type>car</dep:type>
     </dep:moduleId>
     <dep:dependencies/>


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

   </dep:environment>

...

hope this helps.

david jencks


On Nov 30, 2006, at 8:42 AM, Poulin, Maxime wrote:

> Greetings !
>
> So I am trying the very painful task of building one single ear file 
> that would work properly under websphere, geronimo and some others.
>
> The ear contains 1 web app called Chapel, a few EJBs and 2 j2ee client

> apps.
>
> As we deploy on multiple containers (some of them don't have log4j), 
> we keep the log4j and apache commons-logging in the ear file.
>
> Now here is my problem. I created my own log4j appender which I wish 
> to use. The jar containing this appender is contained in the ear just 
> like log4j etc. Now when log4j is initialized, it is geronimo's log4j 
> that is used, and it does not find my custom appender (class not 
> found). I guess that geronimo's log4j is higher in the hierarchy, and 
> does not look down.
>
> So either I make my jar visible to geronimo's log4j or I tell geronimo

> to use my own log4j instead of his for my ear.
>
> I need advice on this, advice, comments or experience. Could you tip 
> me ?
>
> Advices on geronimo's class loaders are also welcomed.
>
> Thank you very much.
>
> Maxime Poulin
> CGI - CGIFX
> 514-228-8800 ext.2860

Reply via email to