WebSphere Application Server(WAS)8.5.5教程第五讲

续前篇!

一、Web 应用部署与类加载策略

Web 应用部署与类加载策略是 WebSphere Application Server(WAS)日常管理的核心部分,尤其对运行大型企业级 Java 应用(如 BAW)非常关键。本讲将分两部分讲解:

1、目标

1. Web 应用部署:如何安装、更新、卸载 WAR/EAR 包

2. 类加载策略:如何解决类冲突、提升加载效率

2、Web 应用部署(WAR / EAR 包)

部署入口

路径如下:
应用程序WebSphere企业应用程序

 

1. 安装新应用

步骤:
  1. 点击【安装】

  2. 选择上传方式:

    • 从本地上传 .war / .ear 文件

    • 或者从服务器路径安装(/opt/IBM/xyz.ear)

  3. 点击【下一步】,按提示填写信息

    • 应用名称(可以修改)

    • 目标服务器(选定一个 WebSphere 实例)

    • 安装目录设置(一般保持默认)

  4. 重要步骤:配置 上下文根(Context Root)

    • 例如:/bawportal,则访问地址为 http://host:port/bawportal

  5. 点击【完成】,然后【保存主配置】

  6. 启动应用程序(在“企业应用程序”列表中选中 ➝ 启动)

2. 更新已有应用

路径:
WebSphere企业应用程序 ➝ 点击应用名 ➝ 点击“更新”

选项:

  • 更新整个 EAR 包(替换旧包)

  • 更新单个模块(如只替换 *.war

  • 更新类、资源文件等(增量更新)

3. 卸载应用

路径:
WebSphere企业应用程序 ➝ 勾选目标 ➝ 点击【卸载】

注意事项:

  • 安装后不要忘记点击右上角的【保存到主配置】

  • 每次安装/更新后建议重启对应服务器,清理缓存

  • 部署 BAW 类 Portal 或 Process App 时,路径/依赖较多,注意 WAR 中 web.xml 和 ClassPath 定义

3、类加载策略

在 WebSphere 中,不同组件之间共享类路径,有时会导致类冲突(比如 Jackson、Log4j 不同版本),所以类加载策略管理非常重要。

类加载相关配置位置:

  1. 服务器级别设置:
    服务器 ➝ 点击目标服务器 ➝ 应用程序设置类装入器策略

  2. 应用程序级别设置:
    企业应用程序 ➝ 点击应用名称 ➝ 类装入器

    模块级别设置(Web 模块 / EJB 模块)

 

两种主要策略:

策略名称含义推荐情况
父类优先(Parent First)默认方式,优先加载 WAS 共享类稳定、安全,适合大部分业务应用
父类最后(Parent Last)优先加载应用自己提供的类(打包在 WAR/EAR 中)防止冲突,适合使用特殊第三方包的情况
设置位置:
  • 下拉选择:类装入方式(Class loader mode)
    ➤ 选择 Parent last 可优先加载应用自己的类

 

使用场景举例:

情况建议策略
使用 Spring Boot 打包的 WARParent last,防止依赖冲突
部署 IBM 官方应用Parent first(默认即可)
出现 ClassNotFoundException / NoSuchMethodError尝试切换策略排查
多个 WAR 共用 jar 包时建议使用 Shared Library(共享类库机制)

4、补充:共享库(Shared Libraries)

如果多个应用使用相同的 jar 包(如 log4j.jar、common-utils.jar),建议配置为共享库,避免冗余加载。

创建方式:

  1. 环境共享库

  2. 新建共享库 ➝ 指定 jar 包目录

  3. 在应用级别(企业应用程序 ➝ 应用 ➝ 共享库映射)挂载该库

 

5、实战调优建议

问题原因应对措施
应用启动慢类太多或依赖冲突开启类加载跟踪、检查依赖树
类冲突报错同类名不同版本设置 Parent last、使用 Shared Library
ClassNotFound 异常类路径未配置检查 WAR/EAR 中 META-INF 及 lib
应用隔离需求多版本 jar 并存各应用用独立类加载器或 Docker

6、总结

重点点位说明
安装、更新、卸载入口WebSphere企业应用程序
上下文根配置决定 URL 访问路径
类装入策略位置服务器级 or 应用级均可设置
推荐默认策略Parent first(安全),遇冲突时用 Parent last

二、案例: BAW在WAS中的类加载策略与依赖管理机制

 下面来深入梳理 IBM Business Automation Workflow(BAW) 在 WebSphere Application Server (WAS) 中的 类加载策略与依赖管理机制,这有助于你深入理解 BAW 各组件运行背后的逻辑,进而定位问题、调优或安全管控。

1、BAW 在 WAS 中的部署结构概览

BAW 其实是由多个模块打包成一个或多个 企业应用(EAR) 部署到 WAS 中的,核心包括:

模块描述类加载来源
BAW Process Server EAR流程执行引擎EAR ➝ BAW Runtime jar
BAW Process Portal WAR用户门户界面WAR ➝ Portal UI 组件
BAW Process Designer浏览器建模工具部署为 Web 应用或远程组件
BAW Business Rules决策/规则服务WAR ➝ ODM 核心库
Common Services如 UCA、事件监听等Shared Libraries ➝ com.lombardi., ibm.bpm.

2、类加载策略在 BAW 中的实际应用

IBM 官方默认使用策略:

应用层级默认策略说明
BAW EAR 主应用Parent First优先加载 WAS 提供的 BPM 内核类
BAW WAR 模块(如 Portal)Parent Last避免 UI 层与 WAS 内部类冲突
扩展/定制应用推荐 Parent Last避免与 BAW runtime jar 冲突

可在 WAS 控制台:

  • 应用程序 ➝ 企业应用程序 ➝ 点击模块 ➝ 类装入器 ➝ 设置类加载方式

示例:防止 Jackson 冲突

BAW 内置 Jackson(如 com.fasterxml.jackson.core),但你部署的自定义服务也用了别的版本?
解决方案:

  • 你的自定义模块设置为 Parent Last

  • 或用 Shared Library 管理 Jackson,并为各应用指定绑定版本

3、依赖管理方式

1. 内部依赖(BAW Runtime 组件)

常见 JAR 包(这些位于安装目录,例如 /opt/IBM/Workflow/lib):

文件名功能
bpmserver.jarBAW 流程引擎核心
teamworks.jar老版 BPM 核心
businessrules.jarODM 引擎
restconnector.jarREST 连接器
ucaservice.jar调度与消息服务

这些 jar 不可擅自替换,否则会导致版本冲突或运行异常。

2. 外部依赖(自定义服务所用)

如:

  • spring-core.jar

  • mybatis.jar

  • jackson-databind.jar

通常放置在:

  • WAR 模块中的 /WEB-INF/lib

  • EAR 的 libAPP-INF/lib

  • Shared Library 中统一管理

4、类加载调试技巧

开启类加载跟踪日志:

在 JVM 参数中添加:

-Dibm.cl.verbose=true

 可以在 WAS SystemOut.log 中看到加载类的来源,例如:

[2/20/25 13:22:11:123 CST] 00000001 SystemOut     O CL Verbose: Loaded class [com.fasterxml.jackson.databind.ObjectMapper] from [file:/opt/IBM/Workflow/lib/jackson-databind.jar]

常见冲突问题排查

现象原因应对方式
ClassCastException同一类被不同类加载器加载设置 Parent Last,或统一使用 Shared Library
ClassNotFoundException类在 WAR 内未打包检查 lib 路径,或导入共享库
Portal 页面空白JS 库冲突或 Portal 模块类问题检查 WAR 配置和类加载策略
自定义服务调用失败缺 jar 或版本冲突检查 EAR 打包结构、依赖版本匹配性

最佳实践总结

操作场景建议
部署标准 BAW 应用保持 IBM 默认类加载设置
部署自定义扩展设置模块类加载为 Parent Last,放置独立 jar
多模块共享 jar配置 Shared Library,避免重复打包
出现冲突或异常开启类加载跟踪日志,查清加载路径
依赖管理使用 Maven 构建打包,控制版本准确性

 未完,待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海科技服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值