8 Replies Latest reply on Oct 8, 2013 5:23 AM by Digit Elektra

    User-specified log class 'org.apache.commons.logging.impl.Lo

    David Delbecq Newbie

      Hello,


      i try to migrate a webapplication that was working fine on tomcat 5.5. Since JBoss web container is based on tomcat, i thought this migration would be straightforward. However, after deployement i get this strange error i can't locate:

      jvm 1 | 19:10:45,775 ERROR [[/intranet]] Error configuring application listener of class org.apache.commons.chain.web.ChainListener
      jvm 1 | java.lang.ExceptionInInitializerError
      jvm 1 | at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      jvm 1 | at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      jvm 1 | at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      jvm 1 | at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      jvm 1 | at java.lang.Class.newInstance0(Class.java:355)
      jvm 1 | at java.lang.Class.newInstance(Class.java:308)
      jvm 1 | at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:264)
      jvm 1 | at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)
      jvm 1 | at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3859)
      jvm 1 | at org.apache.catalina.core.StandardContext.start(StandardContext.java:4393)
      jvm 1 | at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
      jvm 1 | at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
      jvm 1 | at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
      jvm 1 | at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
      jvm 1 | at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
      jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      jvm 1 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      jvm 1 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      jvm 1 | at java.lang.reflect.Method.invoke(Method.java:597)
      jvm 1 | at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
      jvm 1 | at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
      jvm 1 | at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
      jvm 1 | at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
      jvm 1 | at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
      jvm 1 | at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
      jvm 1 | at $Proxy38.start(Unknown Source)
      jvm 1 | at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
      jvm 1 | at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
      jvm 1 | at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
      jvm 1 | at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
      jvm 1 | at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
      jvm 1 | at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
      jvm 1 | at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
      jvm 1 | at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
      jvm 1 | at org.jboss.system.ServiceController.start(ServiceController.java:460)
      jvm 1 | at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
      jvm 1 | at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
      jvm 1 | at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
      jvm 1 | at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
      jvm 1 | at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
      jvm 1 | at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
      jvm 1 | at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
      jvm 1 | at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
      jvm 1 | at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
      jvm 1 | at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
      jvm 1 | at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:362)
      jvm 1 | at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)
      jvm 1 | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      jvm 1 | at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
      jvm 1 | at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
      jvm 1 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
      jvm 1 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
      jvm 1 | at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
      jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      jvm 1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      jvm 1 | at java.lang.Thread.run(Thread.java:619)
      jvm 1 | Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable.
      jvm 1 | at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:798)
      jvm 1 | at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:601)
      jvm 1 | at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:333)
      jvm 1 | at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:307)
      jvm 1 | at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:645)
      jvm 1 | at org.apache.commons.chain.web.ChainListener.<clinit>(ChainListener.java:144)
      jvm 1 | ... 72 more
      


      However, log4jlogger is there inside the WEB-INF/lib/commons-logging-1.1.1.jar, so i don't know why tomcat/jboss doesn't see it.

      $ ls WEB-INF/lib/commons*
      WEB-INF/lib/commons-beanutils-1.7.0.jar WEB-INF/lib/commons-configuration-1.2.jar WEB-INF/lib/commons-fileupload-1.0.jar WEB-INF/lib/commons-pool-1.2.jar
      WEB-INF/lib/commons-beanutils-core-1.7.0.jar WEB-INF/lib/commons-dbcp-1.2.jar WEB-INF/lib/commons-httpclient-3.1.jar WEB-INF/lib/commons-transaction-1.1.jar
      WEB-INF/lib/commons-chain-1.0.jar WEB-INF/lib/commons-digester-1.6.jar WEB-INF/lib/commons-io-1.3.2.jar WEB-INF/lib/commons-validator-1.1.4.jar
      WEB-INF/lib/commons-codec-1.2.jar WEB-INF/lib/commons-discovery-0.2.jar WEB-INF/lib/commons-lang-2.1.jar
      WEB-INF/lib/commons-collections-3.1.jar WEB-INF/lib/commons-el-1.0.jar WEB-INF/lib/commons-logging-1.1.1.jar


      I've read from various post on internet that jboss has problems handling commons-logging, because it does not let webapp provide their own implementation. Is it true? If yes, how can i work aroud this? As far as i know, jboss passes J2EE5 tests, which mandates that war classes override server classes, except for J2EE apis. So it should be possible to have jboss handle this correctly.

        • 2. Re: User-specified log class 'org.apache.commons.logging.imp
          David Delbecq Newbie

          sorry, did not specify, informations about jboss:

          jvm 1 | 09:52:36,250 INFO [ServerImpl] Release ID: JBoss [The Oracle] 5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)
          jvm 1 | 09:52:36,250 INFO [ServerImpl] Bootstrap URL: null
          jvm 1 | 09:52:36,250 INFO [ServerImpl] Home Dir: /web/intraweb/apps/jboss-5.1.0.GA
          jvm 1 | 09:52:36,251 INFO [ServerImpl] Home URL: file:/web/intraweb/apps/jboss-5.1.0.GA/
          jvm 1 | 09:52:36,251 INFO [ServerImpl] Library URL: file:/web/intraweb/apps/jboss-5.1.0.GA/lib/
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Patch URL: null
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Common Base URL: file:/web/intraweb/apps/jboss-5.1.0.GA/common/
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Common Library URL: file:/web/intraweb/apps/jboss-5.1.0.GA/common/lib/
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Server Name: default
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Server Base Dir: /web/intraweb/apps/jboss-5.1.0.GA/server
          jvm 1 | 09:52:36,252 INFO [ServerImpl] Server Base URL: file:/web/intraweb/apps/jboss-5.1.0.GA/server/
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Config URL: file:/web/intraweb/apps/jboss-5.1.0.GA/server/default/conf/
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Home Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Home URL: file:/web/intraweb/apps/jboss-5.1.0.GA/server/default/
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Data Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/data
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Library URL: file:/web/intraweb/apps/jboss-5.1.0.GA/server/default/lib/
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Log Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/log
          jvm 1 | 09:52:36,253 INFO [ServerImpl] Server Native Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/tmp/native
          jvm 1 | 09:52:36,254 INFO [ServerImpl] Server Temp Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/tmp
          jvm 1 | 09:52:36,254 INFO [ServerImpl] Server Temp Deploy Dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/tmp/deploy
          jvm 1 | 09:52:37,003 INFO [ServerImpl] Starting Microcontainer, bootstrapURL=file:/web/intraweb/apps/jboss-5.1.0.GA/server/default/conf/bootstrap.xml
          jvm 1 | 09:52:37,745 INFO [VFSCacheFactory] Initializing VFSCache [org.jboss.virtual.plugins.cache.CombinedVFSCache]
          jvm 1 | 09:52:37,748 INFO [VFSCacheFactory] Using VFSCache [CombinedVFSCache[real-cache: null]]
          jvm 1 | 09:52:38,099 INFO [CopyMechanism] VFS temp dir: /web/intraweb/apps/jboss-5.1.0.GA/server/default/tmp
          jvm 1 | 09:52:38,100 INFO [ZipEntryContext] VFS force nested jars copy-mode is enabled.
          jvm 1 | 09:52:39,777 INFO [ServerInfo] Java version: 1.6.0_17,Sun Microsystems Inc.
          jvm 1 | 09:52:39,777 INFO [ServerInfo] Java Runtime: Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
          jvm 1 | 09:52:39,777 INFO [ServerInfo] Java VM: Java HotSpot(TM) 64-Bit Server VM 14.3-b01,Sun Microsystems Inc.
          jvm 1 | 09:52:39,777 INFO [ServerInfo] OS-System: Linux 2.6.24-24-xen,amd64
          


          • 3. Re: User-specified log class 'org.apache.commons.logging.imp
            jaikiran pai Master

             


            Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apach
            e.commons.logging.impl.Log4JLogger' cannot be found or is not useable.



            However, log4jlogger is there inside the WEB-INF/lib/commons-logging-1.1.1.jar



            jboss-5.1.0.GA


            JBoss AS ignores the presence of jars containing org.apache.commons.logging from the web deployments. Change the following from JBOSS_HOME/server/< servername>/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml:
            <property name="filteredPackages">javax.servlet,org.apache.commons.logging</property>
            

            to
            <property name="filteredPackages">javax.servlet</property>
            

            This will remove the filtering and the commons logging jar will be visible to the classloader.

            This is fixed in later version of JBoss AS https://jira.jboss.org/jira/browse/JBAS-7117

            • 5. Re: User-specified log class 'org.apache.commons.logging.imp
              j koder Newbie

              hi Jai,

               

              I have made the above changes and redeployed my application. Getting the following error when restarting the server.

               

              2010-11-18 15:34:35,369 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/MyApp]] (main) Servlet /MyApp threw load() exception
              org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable.
              at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874)
              at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
              at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
              at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:704)
              at org.springframework.web.servlet.DispatcherServlet.<clinit>(DispatcherServlet.java:208)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
              at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
              at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
              at java.lang.reflect.Constructor.newInstance(Unknown Source)
              at java.lang.Class.newInstance0(Unknown Source)
              at java.lang.Class.newInstance(Unknown Source)
              at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:264)
              at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)
              at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1006)
              at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:950)
              at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4122)
              at org.apache.catalina.core.StandardContext.start(StandardContext.java:4421)
              at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
              at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
              at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
              at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
              at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
              at java.lang.reflect.Method.invoke(Unknown Source)
              at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
              at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
              at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
              at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
              at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
              at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
              at $Proxy38.start(Unknown Source)
              at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
              at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
              at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
              at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
              at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
              at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
              at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
              at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
              at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
              at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
              at org.jboss.system.ServiceController.start(ServiceController.java:460)
              at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
              at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
              at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
              at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
              at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
              at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
              at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
              at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
              at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
              at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
              at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
              at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
              at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
              at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
              at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
              at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
              at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
              at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
              at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
              at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
              at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
              at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
              at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
              at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
              at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
              at org.jboss.Main.boot(Main.java:221)
              at org.jboss.Main$1.run(Main.java:556)
              at java.lang.Thread.run(Unknown Source)
              2010-11-18 15:34:35,416 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (main) deploy, ctxPath=/jmx-console
              2010-11-18 15:34:35,525 INFO  [org.apache.coyote.http11.Http11AprProtocol] (main) Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
              2010-11-18 15:34:35,557 INFO  [org.apache.coyote.ajp.AjpAprProtocol] (main) Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
              2010-11-18 15:34:35,557 INFO  [org.jboss.bootstrap.microcontainer.ServerImpl] (main) JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 47s:191ms

               

              Can you suggest me, if there any other changes which we need to make.

              • 6. Re: User-specified log class 'org.apache.commons.logging.imp
                jaikiran pai Master

                Are you sure you changed the correct file? Which profile are you starting and which exact file did you change? And please post the new contents of that file. Also, how is your application packaged and where is the jar containing that class?

                • 7. Re: User-specified log class 'org.apache.commons.logging.impl.Lo
                  stephan.beutel Newbie

                  I've the same problem. Editing jboss-5.1.0.GA\server\default\deployers\jbossweb.deployer\META-INF\war-deployers-jboss-beans.xml did not solve the problem.

                  Any other solution available?

                  Here's the content of my file after editing:

                   

                  <?xml version="1.0" encoding="UTF-8"?>
                  <!--
                  Web application deployers
                  $Id: war-deployers-jboss-beans.xml 88877 2009-05-14 15:36:29Z alesj $
                  -->
                  <deployment xmlns="urn:jboss:bean-deployer:2.0">
                     <!-- WAR Structure -->
                     <bean name="WARStructure" class="org.jboss.web.deployers.WARStructure">
                         <property name="webInfLibFilter">
                            <!-- We accept all .jar files in WEB-INF/lib -->
                            <bean name="WebInfLibFilter" class="org.jboss.virtual.plugins.vfs.helpers.SuffixMatchFilter">
                               <constructor><parameter class="java.lang.String">.jar</parameter></constructor>
                            </bean>
                         </property>
                         <property name="includeWebInfInClasspath">true</property>
                         <property name="contextInfoOrder">1000</property>
                     </bean>
                     <!-- web.xml parsing deployer -->
                     <bean name="WebAppParsingDeployer" class="org.jboss.deployment.WebAppParsingDeployer">
                        <property name="relativeOrder">2000</property>
                     </bean>
                     <bean name="JBossWebAppParsingDeployer" class="org.jboss.deployment.JBossWebAppParsingDeployer">
                        <property name="relativeOrder">2001</property>
                     </bean>
                    <!-- See JBAS-6062 -->
                     <bean name="WebXmlLessDeployer" class="org.jboss.deployment.LegacyWebXmlLessDeployer"/>
                     <!-- Allow for war local class loaders: in testing -->
                     <bean name="WarClassLoaderDeployer" class="org.jboss.web.tomcat.service.deployers.WarClassLoaderDeployer">
                        <property name="relativeOrder">-1</property>
                        <property name="filteredPackages">javax.servlet</property>     
                     </bean>
                         
                     <!--
                          Injects default clustering metadata.       
                          TODO. A better approach is to use a jboss-web.xml equivalent to conf/web.xml
                          and conf/standardjboss.xml as the source for defaults.
                     -->
                     <bean name="WebAppClusteringDefaultsDeployer"
                           class="org.jboss.web.tomcat.service.deployers.ClusteringDefaultsDeployer">
                       
                        <!-- Default session cache config used by distributable webapps -->
                        <property name="cacheName">standard-session-cache</property>
                        <!-- Default session cache config used by FIELD granularity distributable webapps -->     
                        <property name="fieldGranularityCacheName">field-granularity-session-cache</property>
                       
                        <!--
                        The following two properties define when sessions are replicated to
                        the other nodes.
                        The default value, "instant", uses the request thread to replicate changes
                        to the other nodes at the end of requests. In this case, the
                        "SnapshotInterval" property is not used.
                        The "interval" mode uses a background thread that periodically checks for
                        modified sessions and replicates them.  The "SnapshotInterval"
                        property controls how often (in milliseconds) the background thread
                        should run.  
                       
                        Note that this property is not in effect if the replication-granularity
                        is set to FIELD. If it is FIELD, it will be per http request (that is,
                        "instant" mode.)
                        -->
                        <property name="snapshotMode">INSTANT</property>
                        <property name="snapshotInterval">1000</property>
                       
                        <property name="replicationGranularity">SESSION</property>
                        <property name="replicationTrigger">SET_AND_NON_PRIMITIVE_GET</property>
                        <property name="replicationFieldBatchMode">true</property>
                       
                        <!--
                        Whether by default to add special session handling to coordinate use
                        with mod_jk or other JK connector variants.
                        If a JK connector is used, you will need to set the JvmRoute inside
                        JBossWeb, e.g. configure,
                          Engine name="jboss.web" jvmRoute="Node1" defaultHost="localhost"
                        in server.xml.
                       
                        This value can be configured per webapp in the webapp's jboss.xml.
                       
                        If not set, the default will be to add the special session handling
                        if a jvmRoute is configured on the Engine. So, generally the only reason
                        to configure this overall default is to set it to 'false' and thus force
                        per webapp configuration.
                        -->
                        <!--
                        <property name="useJK">false</property>
                       
                        <property name="useSessionPassivation">false</property>
                        <property name="passivationMaxIdleTime">-1</property> 
                        <property name="passivationMinIdleTime">-1</property>
                        -->
                        <!--
                         Determines the maximum interval between requests, in seconds, after
                         which a request will trigger replication of the session's timestamp
                         regardless of whether the request has otherwise made the session dirty. 
                         Such replication ensures that other nodes in the cluster are aware of
                         the most recent value for the session's timestamp and won't incorrectly
                         expire an unreplicated session upon failover. It also results in correct
                         values for HttpSession.getLastAccessedTime() calls following failover.
                         The cost of timestamp replication is considerably lower in JBoss AS 5
                         than it is in earlier versions since replicating a timestamp does not
                         necessitate replicating any other data.
                    
                         A value of 0 means the metadata will be replicated whenever the session is
                         accessed.  A value of -1 means the metadata will be replicated only if some
                         other activity during the request (e.g. modifying an attribute) has
                         resulted in other replication work involving the session. A positive value
                         greater than the HttpSession.getMaxInactiveInterval() value will be treated
                         as a likely misconfiguration and converted to 0; i.e. replicate the
                         metadata on every request.
                        -->
                        <property name="maxUnreplicatedInterval">60</property>
                       
                     </bean>
                     <!-- The WebMetaData to service mbean deployer -->
                     <bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">
                        <install bean="ManagedDeploymentCreator" method="addAttachmentType">
                           <parameter>
                              <value>org.jboss.metadata.web.jboss.JBossWebMetaData</value>
                           </parameter>
                           <parameter>
                              <value>war</value>
                           </parameter>
                        </install>
                        <uninstall bean="ManagedDeploymentCreator" method="removeAttachmentType">
                           <parameter>
                              <value>org.jboss.metadata.web.jboss.JBossWebMetaData</value>
                           </parameter>
                        </uninstall>
                        <!-- Inject the MainDeployer for resolving cross deployment refs -->
                        <property name="mainDeployer"><inject bean="MainDeployer" /></property>
                        <property name="relativeOrder">2003</property>
                       
                        <!-- FIXME Get this moved to TomcatService in deploy -->
                        <property name="configFile">
                           <value-factory bean="ServiceBindingManager" method="getResourceBinding">
                              <parameter>jboss.web:service=WebServer</parameter>
                              <parameter>${jboss.server.home.url}${/}deploy${/}jbossweb.sar${/}server.xml</parameter>
                           </value-factory>
                        </property>
                       
                        <!-- You can configure a set of authenticators keyed by http-auth method
                        used. This will apply the same set of authenticators across all web
                        applications. You can override the set of authenticators at the web
                        application level by adding <authenticators> element to the respective
                        jboss-web.xml
                        -->     
                        <property name="authenticators">
                           <map class="java.util.Properties" keyClass="java.lang.String" valueClass="java.lang.String">
                              <entry>
                                 <key>BASIC</key>
                                 <value>org.apache.catalina.authenticator.BasicAuthenticator</value>
                              </entry>
                              <entry>
                                 <key>CLIENT-CERT</key>
                                 <value>org.apache.catalina.authenticator.SSLAuthenticator</value>
                              </entry>
                              <entry>
                                 <key>DIGEST</key>
                                 <value>org.apache.catalina.authenticator.DigestAuthenticator</value>
                              </entry>
                              <entry>
                                 <key>FORM</key>
                                 <value>org.apache.catalina.authenticator.FormAuthenticator</value>
                              </entry>
                              <entry>
                                 <key>NONE</key>
                                 <value>org.apache.catalina.authenticator.NonLoginAuthenticator</value>
                              </entry>
                           </map>        
                        </property>
                       
                        <!-- The JAAS security domain to use in the absense of an explicit
                        security-domain specification in the war WEB-INF/jboss-web.xml
                        -->
                        <property name="defaultSecurityDomain">java:/jaas/jboss-web-policy</property>
                        <!-- Get the flag indicating if the normal Java2 parent first class
                             loading model should be used over the servlet 2.3 web container first
                             model.
                        -->
                        <property name="java2ClassLoadingCompliance">false</property>
                        <!-- This is NO LONGER supported this way and it will be completely removed for 6.x.
                             See JBAS-6914 for how you can achieve the same in 5.x with new MC JBossCL layer.
                             A flag indicating if the JBoss Loader should be used. This loader
                             uses a unified class loader as the class loader rather than the tomcat
                             specific class loader.
                             The default is false to ensure that wars have isolated class loading
                             for duplicate jars and jsp files.
                        <property name="useJBossWebLoader">false</property>
                        -->
                        <!-- The list of package prefixes that should not be loaded without
                           delegating to the parent class loader before trying the web app
                           class loader. The packages listed here are those tha are used by
                           the web container implementation and cannot be overriden. The format
                           is a comma separated list of the package names. There cannot be any
                           whitespace between the package prefixes.
                           This setting only applies when UseJBossWebLoader=false.
                        -->
                        <property name="filteredPackages">javax.servlet</property>
                        <property name="lenientEjbLink">true</property>
                        <!--Flag to delete the Work Dir on Context Destroy -->
                        <property name="deleteWorkDirOnContextDestroy">false</property>
                        <!--
                            Class of the session manager (used if context is marked as 'distributable'. Currently allowed values:
                            - org.jboss.web.tomcat.service.session.JBossCacheManager
                        -->
                        <property name="managerClass">org.jboss.web.tomcat.service.session.JBossCacheManager</property>
                        <!-- The name of the request property under with the authenticated JAAS
                        Subject is stored on successful authentication. If null or empty then
                        the Subject will not be stored.
                        -->
                        <!--
                        <property name="subjectAttributeName">j_subject</property>
                        -->
                        <!-- The SessionIdAlphabet is the set of characters used to create a session Id
                             It must be made up of exactly 65 unique characters
                        <property name="sessionIdAlphabet">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_</property>
                        -->
                       
                        <property name="domain">jboss.web</property>
                         <!--  Specify a Bean for JBoss Security PolicyRegistration -->
                         <property name="policyRegistrationName">JBossSecurityPolicyRegistration</property>
                        
                         <!-- Specify a SecurityManagement Wrapper -->
                         <property name="securityManagementName">JNDIBasedSecurityManagement</property>
                         <!-- Specify a SecurityContext FQN class name -->
                         <property name="securityContextClassName">org.jboss.security.plugins.JBossSecurityContext</property>
                     </bean>
                    
                     <bean name="MergedJBossWebMetaDataDeployer"
                            class="org.jboss.web.deployers.MergedJBossWebMetaDataDeployer">
                     </bean>
                  </deployment>

                  <?xml version="1.0" encoding="UTF-8"?>

                   

                  <!--

                  Web application deployers

                  $Id: war-deployers-jboss-beans.xml 88877 2009-05-14 15:36:29Z alesj $

                  -->

                  <deployment xmlns="urn:jboss:bean-deployer:2.0">

                   

                     <!-- WAR Structure -->

                     <bean name="WARStructure" class="org.jboss.web.deployers.WARStructure">

                         <property name="webInfLibFilter">

                            <!-- We accept all .jar files in WEB-INF/lib -->

                            <bean name="WebInfLibFilter" class="org.jboss.virtual.plugins.vfs.helpers.SuffixMatchFilter">

                               <constructor><parameter class="java.lang.String">.jar</parameter></constructor>

                            </bean>

                         </property>

                         <property name="includeWebInfInClasspath">true</property>

                         <property name="contextInfoOrder">1000</property>

                     </bean>

                   

                     <!-- web.xml parsing deployer -->

                     <bean name="WebAppParsingDeployer" class="org.jboss.deployment.WebAppParsingDeployer">

                        <property name="relativeOrder">2000</property>

                     </bean>

                     <bean name="JBossWebAppParsingDeployer" class="org.jboss.deployment.JBossWebAppParsingDeployer">

                        <property name="relativeOrder">2001</property>

                     </bean>

                   

                    <!-- See JBAS-6062 -->

                     <bean name="WebXmlLessDeployer" class="org.jboss.deployment.LegacyWebXmlLessDeployer"/>

                   

                     <!-- Allow for war local class loaders: in testing -->

                     <bean name="WarClassLoaderDeployer" class="org.jboss.web.tomcat.service.deployers.WarClassLoaderDeployer">

                        <property name="relativeOrder">-1</property>

                        <property name="filteredPackages">javax.servlet</property>     

                     </bean>

                   

                     <!--

                          Injects default clustering metadata.       

                          TODO. A better approach is to use a jboss-web.xml equivalent to conf/web.xml

                          and conf/standardjboss.xml as the source for defaults.

                     -->

                     <bean name="WebAppClusteringDefaultsDeployer"

                           class="org.jboss.web.tomcat.service.deployers.ClusteringDefaultsDeployer">

                   

                        <!-- Default session cache config used by distributable webapps -->

                        <property name="cacheName">standard-session-cache</property>

                        <!-- Default session cache config used by FIELD granularity distributable webapps -->     

                        <property name="fieldGranularityCacheName">field-granularity-session-cache</property>

                   

                        <!--

                        The following two properties define when sessions are replicated to

                        the other nodes.

                        The default value, "instant", uses the request thread to replicate changes

                        to the other nodes at the end of requests. In this case, the

                        "SnapshotInterval" property is not used.

                        The "interval" mode uses a background thread that periodically checks for

                        modified sessions and replicates them.  The "SnapshotInterval"

                        property controls how often (in milliseconds) the background thread

                        should run.  

                   

                        Note that this property is not in effect if the replication-granularity

                        is set to FIELD. If it is FIELD, it will be per http request (that is,

                        "instant" mode.)

                        -->

                        <property name="snapshotMode">INSTANT</property>

                        <property name="snapshotInterval">1000</property>

                   

                        <property name="replicationGranularity">SESSION</property>

                        <property name="replicationTrigger">SET_AND_NON_PRIMITIVE_GET</property>

                        <property name="replicationFieldBatchMode">true</property>

                   

                        <!--

                        Whether by default to add special session handling to coordinate use

                        with mod_jk or other JK connector variants.

                        If a JK connector is used, you will need to set the JvmRoute inside

                        JBossWeb, e.g. configure,

                          Engine name="jboss.web" jvmRoute="Node1" defaultHost="localhost"

                        in server.xml.

                   

                        This value can be configured per webapp in the webapp's jboss.xml.

                   

                        If not set, the default will be to add the special session handling

                        if a jvmRoute is configured on the Engine. So, generally the only reason

                        to configure this overall default is to set it to 'false' and thus force

                        per webapp configuration.

                        -->

                        <!--

                        <property name="useJK">false</property>

                   

                        <property name="useSessionPassivation">false</property>

                        <property name="passivationMaxIdleTime">-1</property> 

                        <property name="passivationMinIdleTime">-1</property>

                        -->

                   

                        <!--

                         Determines the maximum interval between requests, in seconds, after

                         which a request will trigger replication of the session's timestamp

                         regardless of whether the request has otherwise made the session dirty. 

                         Such replication ensures that other nodes in the cluster are aware of

                         the most recent value for the session's timestamp and won't incorrectly

                         expire an unreplicated session upon failover. It also results in correct

                         values for HttpSession.getLastAccessedTime() calls following failover.

                   

                         The cost of timestamp replication is considerably lower in JBoss AS 5

                         than it is in earlier versions since replicating a timestamp does not

                         necessitate replicating any other data.

                   

                         A value of 0 means the metadata will be replicated whenever the session is

                         accessed.  A value of -1 means the metadata will be replicated only if some

                         other activity during the request (e.g. modifying an attribute) has

                         resulted in other replication work involving the session. A positive value

                         greater than the HttpSession.getMaxInactiveInterval() value will be treated

                         as a likely misconfiguration and converted to 0; i.e. replicate the

                         metadata on every request.

                        -->

                        <property name="maxUnreplicatedInterval">60</property>

                   

                     </bean>

                   

                     <!-- The WebMetaData to service mbean deployer -->

                     <bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">

                        <install bean="ManagedDeploymentCreator" method="addAttachmentType">

                           <parameter>

                              <value>org.jboss.metadata.web.jboss.JBossWebMetaData</value>

                           </parameter>

                           <parameter>

                              <value>war</value>

                           </parameter>

                        </install>

                        <uninstall bean="ManagedDeploymentCreator" method="removeAttachmentType">

                           <parameter>

                              <value>org.jboss.metadata.web.jboss.JBossWebMetaData</value>

                           </parameter>

                        </uninstall>

                   

                        <!-- Inject the MainDeployer for resolving cross deployment refs -->

                        <property name="mainDeployer"><inject bean="MainDeployer" /></property>

                   

                        <property name="relativeOrder">2003</property>

                   

                        <!-- FIXME Get this moved to TomcatService in deploy -->

                        <property name="configFile">

                           <value-factory bean="ServiceBindingManager" method="getResourceBinding">

                              <parameter>jboss.web:service=WebServer</parameter>

                              <parameter>${jboss.server.home.url}${/}deploy${/}jbossweb.sar${/}server.xml</parameter>

                           </value-factory>

                        </property>

                   

                        <!-- You can configure a set of authenticators keyed by http-auth method

                        used. This will apply the same set of authenticators across all web

                        applications. You can override the set of authenticators at the web

                        application level by adding <authenticators> element to the respective

                        jboss-web.xml

                        -->     

                        <property name="authenticators">

                           <map class="java.util.Properties" keyClass="java.lang.String" valueClass="java.lang.String">

                              <entry>

                                 <key>BASIC</key>

                                 <value>org.apache.catalina.authenticator.BasicAuthenticator</value>

                              </entry>

                              <entry>

                                 <key>CLIENT-CERT</key>

                                 <value>org.apache.catalina.authenticator.SSLAuthenticator</value>

                              </entry>

                              <entry>

                                 <key>DIGEST</key>

                                 <value>org.apache.catalina.authenticator.DigestAuthenticator</value>

                              </entry>

                              <entry>

                                 <key>FORM</key>

                                 <value>org.apache.catalina.authenticator.FormAuthenticator</value>

                              </entry>

                              <entry>

                                 <key>NONE</key>

                                 <value>org.apache.catalina.authenticator.NonLoginAuthenticator</value>

                              </entry>

                           </map>        

                        </property>

                   

                        <!-- The JAAS security domain to use in the absense of an explicit

                        security-domain specification in the war WEB-INF/jboss-web.xml

                        -->

                        <property name="defaultSecurityDomain">java:/jaas/jboss-web-policy</property>

                   

                        <!-- Get the flag indicating if the normal Java2 parent first class

                             loading model should be used over the servlet 2.3 web container first

                             model.

                        -->

                        <property name="java2ClassLoadingCompliance">false</property>

                   

                        <!-- This is NO LONGER supported this way and it will be completely removed for 6.x.

                             See JBAS-6914 for how you can achieve the same in 5.x with new MC JBossCL layer.

                   

                             A flag indicating if the JBoss Loader should be used. This loader

                             uses a unified class loader as the class loader rather than the tomcat

                             specific class loader.

                             The default is false to ensure that wars have isolated class loading

                             for duplicate jars and jsp files.

                        <property name="useJBossWebLoader">false</property>

                        -->

                   

                        <!-- The list of package prefixes that should not be loaded without

                           delegating to the parent class loader before trying the web app

                           class loader. The packages listed here are those tha are used by

                           the web container implementation and cannot be overriden. The format

                           is a comma separated list of the package names. There cannot be any

                           whitespace between the package prefixes.

                           This setting only applies when UseJBossWebLoader=false.

                        -->

                        <property name="filteredPackages">javax.servlet</property>

                   

                        <property name="lenientEjbLink">true</property>

                   

                        <!--Flag to delete the Work Dir on Context Destroy -->

                        <property name="deleteWorkDirOnContextDestroy">false</property>

                   

                        <!--

                            Class of the session manager (used if context is marked as 'distributable'. Currently allowed values:

                            - org.jboss.web.tomcat.service.session.JBossCacheManager

                        -->

                        <property name="managerClass">org.jboss.web.tomcat.service.session.JBossCacheManager</property>

                   

                        <!-- The name of the request property under with the authenticated JAAS

                        Subject is stored on successful authentication. If null or empty then

                        the Subject will not be stored.

                        -->

                        <!--

                        <property name="subjectAttributeName">j_subject</property>

                        -->

                   

                        <!-- The SessionIdAlphabet is the set of characters used to create a session Id

                             It must be made up of exactly 65 unique characters

                        <property name="sessionIdAlphabet">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-_</property>

                        -->

                   

                        <property name="domain">jboss.web</property>

                         <!--  Specify a Bean for JBoss Security PolicyRegistration -->

                         <property name="policyRegistrationName">JBossSecurityPolicyRegistration</property>

                   

                         <!-- Specify a SecurityManagement Wrapper -->

                         <property name="securityManagementName">JNDIBasedSecurityManagement</property>

                   

                         <!-- Specify a SecurityContext FQN class name -->

                         <property name="securityContextClassName">org.jboss.security.plugins.JBossSecurityContext</property>

                     </bean>

                   

                     <bean name="MergedJBossWebMetaDataDeployer"

                            class="org.jboss.web.deployers.MergedJBossWebMetaDataDeployer">

                     </bean>

                   

                  </deployment>

                  • 8. Re: User-specified log class 'org.apache.commons.logging.impl.Lo
                    Digit Elektra Newbie

                    For what it's worth, just had the same issue on a JBoss 5.1GA.

                    I added a file jboss-classloading.xml under the folder WEB-INF of my war file with the contents:

                     

                    <?xml version="1.0" encoding="UTF-8"?>

                    <classloading xmlns="urn:jboss:classloading:1.0"

                          name="test.war"

                          domain="test_domain"

                          export-all="NON_EMPTY"

                          import-all="true">

                    </classloading>

                     

                    Then it worked.

                    The filteredPackages did not work for me either.

                     

                    Regards,

                     

                    Digit