[slf4j-dev] Service Provider Interface (using jcl104-over-slf4j.jar with axis.jar)

Ceki Gülcü listid at qos.ch
Wed Mar 22 18:10:11 CET 2006


Dave,

I spent some time reading the source code of commons-discovery version 0.2 
which I believe matches the version you are testing with. Reading the 
javadocs for o.a.c.discovery.tools.DiscoverClass and your previous 
messages, I added
the file "org.apache.commons.logging.LogFactory" under META-INF/services.

You can find the modified jar file including the fix as an attachment to 
this message. Can you please give it a try?

Thanks in advance,

At 07:01 PM 3/21/2006, Dave Wallace wrote:
>I had not modifed jcl104-over-slf4j.jar other than to add
>/META-INF/services by unpacking the jar (from the 1.0 release), adding
>the file and repacking.
>The original, unmodified 1.0 release of jcl104-over-slf4j.jar and the
>one you sent me both fail like so:
>java.lang.ExceptionInInitializerError
>     at org.apache.axis.message.NodeImpl.<clinit>(NodeImpl.java:48)
>    .... [Elided] ....
>Caused by: org.apache.commons.discovery.DiscoveryException: No
>implementation defined for org.apache.commons.logging.LogFactory
>     at
>org.apache.commons.discovery.tools.ClassUtils.verifyAncestory(ClassUtils.java:176)
>     at
>org.apache.commons.discovery.tools.SPInterface.verifyAncestory(SPInterface.java:201)
>     at
>org.apache.commons.discovery.tools.SPInterface.newInstance(SPInterface.java:195)
>     at
>org.apache.commons.discovery.tools.DiscoverClass.newInstance(DiscoverClass.java:579)
>     at
>org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:418)
>     at
>org.apache.commons.discovery.tools.DiscoverSingleton.find(DiscoverSingleton.java:378)
>     at
>org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at
>org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
>     at
>org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
>     ... 37 more
>
>I believe that the vm is able to load
>org.apache.axis.components.logger.LogFactory because javac tends to fold
>public static final variables into generated code, therefore there are
>no references to FACTORY_PROPERTIES and FACTORY_DEFAULT in the axis
>LogFactory, just the values are stored. So I don't think they can be
>overridden without recompiling axis.jar.

-- 
Ceki Gülcü
http://ceki.blogspot.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jcl104-over-slf4j.jar
Type: application/octet-stream
Size: 6340 bytes
Desc: not available
URL: <http://qos.ch/pipermail/slf4j-dev/attachments/20060322/445af3be/attachment.obj>


More information about the slf4j-dev mailing list