No..  :-)

It's not clear to me exactly WHAT your exact problem is... but can I 
hazard a guess that you have your application classloaders configured to 
load the webapp classes before the appserver host classes?

IF that is true, then the following occurs [and the ramifications of this 
problem extend well beyond commons-logging, it is my opinion that we are 
only seeing the tip of this iceburg :-]

First, some nomenclature:

- let <classLoader>:: be a classloader
- let <classLoader>::<Class> be a <Class> loaded by <classLoader>.

Note that <classLoaderA>::<YourClass> is NOT the same class as 
<classLoaderB>::<YourClass>  [the same class resource loaded by two 
different classloaders does NOT result in equivalent classes within the 
JVM].

- let a.jar & b.jar both be in an appserver/lib directory (used internally 
& exposed to applications).
- A class A defined in a.jar.
- A class B, such that B extends on A, defined in b.jar
- A property file, system property, or service definition defines B as "a 
desired" implementation of A.
- During host startup, appserver::A and appserver::B are loaded (by 
whatever means).

Now, drop a copy of a.jar into a webapp (classloader hierarchy: webapp/lib 
--(isChildOf)--> appserver/lib).
In a first case, webapp::A is never seen: the class loaders typically find 
appserver::A first.
However, Tomcat (and others) often allow a flag to be set to allow local 
classes to be loaded before appserver classes.

Remember our property file/system property defining B as "the desired" 
implementation of A?

If the system now attempts to locate & load B, without being aware of 
which classloader actually found it (A is unaware of whether webapp:: or 
appserver:: finds the resource), then in this case it will find & load 
appserver::B.

The class loaded (appserver::B) does NOT extend webapp::A, instead it 
extends a different class: appserver::A.

<ras>

*******************************************
Richard A. Sitze
IBM WebSphere WebServices Development




"Per Kreipke" <[EMAIL PROTECTED]>
09/25/2002 03:45 PM
Please respond to axis-dev
 
        To:     <[EMAIL PROTECTED]>
        cc: 
        Subject:        RE: Using Axis SOAP client from Tomcat/Catalina 
causes LogConfigurationException...

 


> Isn't Tomcat just picking up its commons-logging.jar from
> tomcat/server/lib?  You might have to see whether Tomcat is stable if
> you replace that with the one from Axis rc1.

Scott,

Thanks for the suggestion. You're right, the one in [tomcat]/server/lib
should be used by the 'kernel'.

I'd tried all of these:

    [tomcat]/common/lib         [tomcat]/server/lib

1)  commons-logging 1.0.1-dev   -none-
2)  commons-logging 1.1-dev     -none-

3)  commons-logging 1.0.1-dev   commons-logging 1.0.1-dev
4)  commons-logging 1.1-dev     commons-logging 1.0.1-dev

5)  commons-logging 1.0.1-dev   commons-logging 1.1-dev
6)  commons-logging 1.1-dev     commons-logging 1.1-dev

All caused the same error.

The trick turned out to be Richard's note about having a commons-logging 
in
your WARs/EARs as well.

When I removed the one in the Cocoon WAR and went back to the ones that
Tomcat and Axis wanted, it worked.

E.g. this worked
    [tomcat]/common/lib         [tomcat]/server/lib

4)  commons-logging 1.1-dev     commons-logging 1.0.1-dev

Richard,

Care to comment about what the problem is? I'm a little unclear.

Per



Reply via email to