4.到myfaces项目网站http://myfaces.apache.org/,下载与客户应用同一版本的最简单的sample应用myfaces-example-simple-1.1.9.war,在WAS上安装进行测试,页面无法显示,进行第1步更改类加载路径也无法显示。检查myfaces-example-simple-1.1.9.war的lib目录,删除掉xml-apis-1.0.b2.jar和xmlParserAPIs-2.0.2.jar包,运行成功。
5.回到客户应用,删除掉xml-apis-1.0.b2.jar和xmlParserAPIs-2.0.2.jar,更改类加载路径,页面正常显示。
6.如果实际诊断中,能够明确断定是某个类的加载出了问题,可以打开“详细类装入”:选择“应用程序服务器/server1/进程定义/Java虚拟机”,选择“详细类装入”如下图:
重启WAS之后,在native_stderr.log中,可以看到类的加载信息,例如:
class load: org.apache.taglibs.standard.tlv.JstlBaseTLV from: file:/D:/Program/was61/AppServer/profiles/TestProfile/installedApps/wdanNode02Cell/myfaces-example-simple-1_1_9_war.ear/myfaces-example-simple-1.1.9.war/WEB-INF/lib/jstl-1.2.jar
如果还需要类加载的更详细信息,可以在诊断跟踪中设置 *=info: com.ibm.ws.classloader.*=all,具体做法为:登陆管理控制台,左边导航树选择“故障诊断/日志和跟踪”,然后在右面区域选择进程名(单机环境通常为server1)/诊断跟踪,然后选择“更改日志详细信息级别”,设置“*=info: com.ibm.ws.classloader.*=all”,保存。
重启WAS。在profile_root/logs/server1/trace.log中,就可以看到类加载的详细信息。例如:
> loadClass name=com.ibm.isclite.container.collaborator.PortletServletCollaborator
…
com.ibm.ws.classloader.CompoundClassLoader@3f603f6
Local ClassPath: D:\Program\was61\AppServer\systemApps\isclite.ear\struts.jar;
…
Delegation Mode: PARENT_FIRST
[09-12-31 11:39:18:671 CST] 0000000a CompoundClass < loadClass Exit
需要注意的是,开源项目为应用开发节省了很多工作量,但开发人员使用开源项目时,最好对该开源项目的运行机制、代码,以及要使用的应用服务器类加载机制有较好的理解,以便于错误诊断。