The Application Server classpath is not the place to add
the MQSeries patch. The WebSphere Application Server classloader have the
following hierarchy:
- Bootstrap ClassLoader
- WebSphere Application Server ClassLoader
- Application ClassLoader
Role of each classloader:
- The bootstrap classloader loads the built in Java™ SDK
classes plus whatever is on the classpath.
- The WebSphere Application Server classloader loads the
WebSphere Application Server libraries (such as,
install_root/lib/*.jar) as well as the resource
providers jar files (such as, MQ and JDBC drivers).
- The application classloader(s) loads the actual
application ear files.
Classloaders are hierarchical in nature. For example, a class loaded by
the WebSphere Application Server classloader can see the classes loaded by
bootstrap, but not vice versa.
The problem is that the MQSeries patch is loaded by bootstrap
classloader. However the patch is for a class loaded by the WebSphere
Application Server classloader (The MQ JMS provider ). The patch must
reference classes contained in the WebSphere Application Server
classloader and it is unable to load it.
To fix this problem:
- Remove entry for the MQSeries patch from the operating
system's CLASSPATH variable
- Insert the patch by update the WAS_EXT_DIRS
variable found in
install_root/bin/setupCmdLine.sh
(such as, /opt/WebSphere/AppServer/bin/setupCmdLine.sh).
The patch should be added to the beginning of the variable.
|