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

06-01 1364阅读

续前篇!

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

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

1、目标

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

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

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

部署入口

路径如下:

应用程序 ➝ WebSphere企业应用程序

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

1. 安装新应用

步骤:
  1. 点击【安装】

  2. 选择上传方式:

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

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

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

      • 应用名称(可以修改)

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

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

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

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

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

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

2. 更新已有应用

路径:

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

选项:

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

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

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

    3. 卸载应用

    路径:

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

    注意事项:

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

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

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

      3、类加载策略

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

      类加载相关配置位置:

      1. 服务器级别设置:

        服务器 ➝ 点击目标服务器 ➝ 应用程序设置 ➝ 类装入器策略

      2. 应用程序级别设置:

        企业应用程序 ➝ 点击应用名称 ➝ 类装入器

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

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

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

      两种主要策略:

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

        ➤ 选择 Parent last 可优先加载应用自己的类

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

        使用场景举例:

        情况建议策略
        使用 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. 在应用级别(企业应用程序 ➝ 应用 ➝ 共享库映射)挂载该库

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

        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 控制台:

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

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

          示例:防止 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 的 lib 或 APP-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 构建打包,控制版本准确性

                 未完,待续!

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码