0 Replies Latest reply on Jun 14, 2006 6:05 PM by Michael Jara

    Patched commons-logging.jar broke Log4JLogger API?

    Michael Jara Newbie

      I noticed, while migrating some code from JBoss 3.2.7 to JBoss 4.0.4.GA, that there's a problem with "commons-logging.jar". I tried building something, with the JBoss version of this jar in my classpath, and I got a "cannot resolve symbol" error.

      symbol : method getLogger ()
      location: class org.apache.commons.logging.impl.Log4JLogger
      Logger logger = ((Log4JLogger)log).getLogger();

      Interesting... I took a look at the Apache commons logging javadocs, and they do list "getLogger" as a public method of "Log4JLogger". Just to be sure, I checked the javadocs for all releases... Every release since "Logger" superceded "Category" does have this method.

      I next looked at the "jar-versions.xml" file, supplied with the JBoss distribution. It lists the "implVersion" for "commons-logging.jar" as "1.0.5.GA-jboss" and indicates that this is a patched version from JBoss.

      I read something elsewhere on the JBoss site indicating that this patch somehow involves dynamic loading of the log4j.jar (or was it log4j.properties?) Maybe someone decided to conveniently eliminate a pesky method, while working on this patch...

      Is this API change a mistake, or is it intentional? I don't think Apache would be happy to know that JBoss is changing their API! :)

      Any suggestions on getting around this, besides "don't call that method"? I'm not using .ear files, so it's not easy for me to replace commons-logging.jar just for my application. (I'd have to drop a replacement jar into the "deploy" directory, or my own "lib" directory, and I think that would cause trouble.

      Thanks for any insight!