Troubleshooting
Problem
This document explains that when starting a newly created Websphere Application Server (WAS) v8.5 profile without any applications deployed (not even the default ones) messages might be thrown in the SystemOut.log preventing the start-up of the application server:
Environment
IBM i; IBM WebSphere Application Server
Diagnosing The Problem
When starting a newly created Websphere Application Server (WAS) v8.5 profile without any applications deployed, not even the default ones, the following messages might be thrown in the SystemOut.log preventing the start-up of the application server:
java.lang.ExceptionInInitializerError
Caused by: org.apache.commons.logging.LogConfigurationException:
org.apache.commons.logging.LogConfigurationException:
org.apache.commons.logging.LogConfigurationException: Class
org.apache.commons.logging.impl.Log4JLogger does not implement Log
Resolving The Problem
After the newly created WAS v8.5 profile is started, the application server will be ACTIVE, but no applications can be deployed; and the same message are reported.
This is caused by a different Apache commons-logging.jar file in a different IFS path being loaded by a Java classloader than the one in the Websphere classloader path. In this case, an Apache commons-logging-1.1.jar was found in /QIBM/Userdata/Java400/ext. After this jar file version was removed, the server started without any error messages and an application could be deployed.
The reason that the Apache commons-logging-1.1.jar is picked from path /QIBM/Userdata/Java400/ext is as follows:
| The Java Extension Class loader is a parent to all other class loaders in an environment, and since, by default, class loaders delegate to their parents before trying to load things locally, anything that's there will get picked up in preference to anything anywhere else in the WAS or Java environments. |
The following method can be used to find out which commons-logging.jar is being loaded:
1. Launch Administrative Console (under tools for the Websphere Application server in IBM Web Administration for i).
2. Expand Server Types followed by clicking on Websphere Application servers.
3. A list of Application servers will appear; click on the one which has the problem.
4. Scroll on the next screen which is the Configuration tab. Then scroll down until you see Java and Process Management, and click on Process definition as seen on the screen below:

5. Once in the Process Definition screen, click on Java Virtual Machine as on the screen below:

6. On the Java Virtual Machine screen (Configuration tab) , select Verbose class loading and add the following two Generic JVM Arguments as seen on the screen below:
o -Dws.osgi.debug
o -Dws.ext.debug=true

7. Restart the Websphere Application Server. The output of the above settings is logged as follows:
Verbose class loading output goes to native_stderr.log
The JVM Arguments output goes to native_stdout.log
These log files will show the name of the commons-logging.jar and where it is being loaded from. Remove the user-provided JAR file from the system and restart the WebSphere Application Server. The WAS profile will now start without any error messages and applications can now be deployed.
Historical Number
666332174
Was this topic helpful?
Document Information
Modified date:
18 December 2019
UID
nas8N1010436