that message appears in LogFactoryImpl.getLogConstructor() as the JCL Log 
factory is trying to figure out how to
create a new Log object
            if (!logInterface.isAssignableFrom(logClass)) {
                Class interfaces[] = logClass.getInterfaces();
                for (int i = 0; i < interfaces.length; i++) {
                    if 
("org.apache.commons.logging.Log".equals(interfaces[i].getName())) {
                        throw new LogConfigurationException
                            ("Invalid class loader hierarchy.  " +
                             "You have more than one version of '" +
                             "org.apache.commons.logging.Log" + "' visible, 
which is " +
                             "not allowed.");
                    }
                }
                throw new LogConfigurationException
                    ("Class " + logClassName + " does not implement '" +
                     "org.apache.commons.logging.Log" + "'.");
            }
i will have to dig deeper into what this code is doing (what might happen if 
the JCL was loaded by one classloader and
log4j was loaded by another or if 2 copies of log4j got loaded).  also what 
version of the JCL are you using?  your
line numbers don't seem to line up with the 1.0.4 source.

also your commons-logging.jar is in /apps/opt/axis?  what happens if you move 
your log4j.jar there as well? 
WEB-INF/lib is certainly in a seperate classloader specific to the webapp.  if 
the JCL library is loaded by the
application classloader that would be an easy test-case.  tho if the code using 
the log was also in that higher loader
called by a thread from a lower loader...  i dunno - it starts getting rather 
complicated after a while.  let me see
if i can reproduce this error over the weekend (if you can't get it solved 
before then), ok?



Reply via email to