知识大全 一次WebSphere类加载问题的错误诊断

Posted 项目

篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一次WebSphere类加载问题的错误诊断相关的知识,希望对你有一定的参考价值。

一次WebSphere类加载问题的错误诊断  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    开发人员使用开源项目在Tomcat上进行开发 然后在生产环境中使用WebSphere应用服务器 target=_blank>服务器(WAS)部署时 有时会遇到在Tomcat上开发的应用在WAS上不能运行的情况 其中相当一部分错误是因为类加载的问题 有一次接到用户电话 反映使用JSF开发的应用 在WAS上不能正常运行 到用户现场 发现开发人员使用myfaces开源项目在tomcat上进行开发 部署到WAS上时 页面不能正常显示 检查WAS日志SystemOut log和SystemErr log以及应用自身的日志 没有发现有意义的信息 遇到此类问题时 如果对开源项目或 应用内部运行机制不太了解 可以大致按下列思路进行错误诊断

   .首先先尝试更改应用的类加载路径

  WAS的类加载原理请参见后面列出的参考资料

  如果是xxx war应用 在部署到WAS后 登陆WAS管理控制台 选择应用程序/xxx_war应用 选择 管理模块 选择相应的 war模块 默认的类装入器顺序为 类已装入并且是先使用父类装入器 更改 类装入器顺序 为 类已装入并且是先使用应用程序类装入器

  如下图

   src= //img educity cn/img_ / / / jpg >

  如果安装的应用是xxx ear应用 特别是有一些公用的utility jar位于ear级别 则除了按照上面步骤更改war模块(也称为web模块)的类装入器顺序之外 还要更改ear级别的类装入器顺序 选择应用程序/xxx应用 选择 类装入和更新检测 选择 类已装入并且是先使用应用程序类装入器 如下图

   src= //img educity cn/img_ / / / jpg >

   src= //img educity cn/img_ / / / jpg >

  重启应用 必要时重启WAS 测试页面是否正常显示

   .如果还是不能正常显示 则查看应用特别是开源项目使用的utility jar包 通常位于ear目录级别 或者xxx war/WEB INF/lib目录下 删除掉一些常见的WAS已有的且必须使用WAS自带的jar包 如j ee jar 支持JSP等运行的jar等(此类问题SystemOut log或者SystemErr log中通常会报错) 如果自己无法判断 则略过此步 本次错误诊断中 检查客户应用 发现WEB INF/lib目录中jar包数量众多 且客户除了使用myfaces 还有其他大量开源项目 不能明确断定有问题的与WAS冲突的jar包

   .到/support以及google baidu上搜索关键字JSF myfaces WebSphere 得到一些建议

  Apache Tomahawk configuration error with Apache MyFaces and WebSphere Application Server and :

  _US&cs=utf &cc=us&lang=en

  Using MyFaces JSF and WebSphere Application Server V and V :

  _US&cs=utf &cc=us&lang=en

  sitemesh myfaces richfaces的集成解决方案

  

  按照搜到的建议操作 页面仍无法显示 为了分离错误 缩小诊断范围 进行第 步

   .到myfaces项目网站 下载与客户应用同一版本的最简单的sample应用myfaces example simple war 在WAS上安装进行测试 页面无法显示 进行第 步更改类加载路径也无法显示 检查myfaces example simple war的lib目录 删除掉xml apis b jar和xmlParserAPIs jar包 运行成功

   .回到客户应用 删除掉xml apis b jar和xmlParserAPIs jar 更改类加载路径 页面正常显示

   .如果实际诊断中 能够明确断定是某个类的加载出了问题 可以打开 详细类装入 选择 应用程序服务器/server /进程定义/Java虚拟机 选择 详细类装入 如下图

   src= //img educity cn/img_ / / / jpg >

  重启WAS之后 在native_stderr log中 可以看到类的加载信息 例如

class load: apache taglibs standard tlv JstlBaseTLV from: file:/D:/Program/was /AppServer/profiles/TestProfile/installedApps/wdanNode Cell/myfaces example simple _ _ _war ear/myfaces example simple war/WEB INF/lib/jstl jar

  如果还需要类加载的更详细信息 可以在诊断跟踪中设置 *=info: ibm ws classloader *=all 具体做法为 登陆管理控制台 左边导航树选择 故障诊断/日志和跟踪 然后在右面区域选择进程名(单机环境通常为server )/诊断跟踪 然后选择 更改日志详细信息级别 设置 *=info: ibm ws classloader *=all 保存

   src= //img educity cn/img_ / / / jpg >

   src= //img educity cn/img_ / / / jpg >

  重启WAS 在profile_root/logs/server /trace log中 就可以看到类加载的详细信息 例如

> loadClass name=llaborator PortletServletCollaborator … ibm ws classloader CompoundClassLoader@ f f    Local ClassPath: D:\\Program\\was \\AppServer\\systemApps\\isclite ear\\struts jar;    …    Delegation Mode: PARENT_FIRST [ : : : CST] a CompoundClass < loadClass Exit cha138/Article/program/Java/hx/201311/27106

相关参考

知识大全 Tomcat类加载机制

Tomcat类加载机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TomcatServer在

知识大全 关于Java程序中类加载完全揭密

关于Java程序中类加载完全揭密  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  类加载是java

知识大全 Tomcat加载servlet类文件

Tomcat加载servlet类文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一个  有

知识大全 解析zend Framework如何自动加载类

解析zendFramework如何自动加载类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章

知识大全 Final关键字对JVM类加载器的影响

Final关键字对JVM类加载器的影响  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 ORACLE数据库问题诊断方法 :常见错误篇

ORACLE数据库问题诊断方法:常见错误篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORA

知识大全 .net延迟加载的一般实现

  本文对延迟加载在常用控件的实现做简单的描述  一在界面第一次显示时加载  最简单的延迟加载可以通过控件第一次显示时加载数据例如你有很多的页签只有用户切换到这个页签时才会加载数据  在NET的Con

知识大全 一次ORA-4030问题诊断及解决(一)

一次ORA-4030问题诊断及解决(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在报表数

知识大全 一次ORA-4030问题诊断及解决(三)

一次ORA-4030问题诊断及解决(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在报表数

知识大全 基于Spring框架的WebSphere应用开发

基于Spring框架的WebSphere应用开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!