You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python&WLST实现WebLogic已部署应用的条件化卸载

WebLogic WLST 条件化Undeploy实现方案

需求说明

  • 仅当目标应用已部署在WebLogic中时,才执行undeploy操作;应用不存在则跳过
  • 在undeploy全流程中捕获异常并打印详细错误信息
  • 将判断逻辑整合到现有undeploy函数中

修改后的完整代码

from java.lang import Exception
import traceback

def undeploy():
    try:
        conn()  # 建立与WebLogic的连接
        # 提取所有已部署应用的名称列表
        deployed_apps = [app.getName() for app in cmo.getAppDeployments()]
        global applicationName  # 引用外部传入的应用名称参数
        
        # 条件判断:应用未部署则直接跳过
        if applicationName not in deployed_apps:
            print(f"应用 {applicationName} 未部署,跳过undeploy操作")
            disconnect()
            return
        
        # 应用已部署,执行卸载流程
        edit()
        startEdit()
        
        print(f"开始停止应用 {applicationName}...")
        stopApplication(applicationName)
        print(f"应用 {applicationName} 已停止")
        
        print(f"开始卸载应用 {applicationName}...")
        undeploy(applicationName)
        print(f"应用 {applicationName} 已卸载")
        
        save()
        activate()
        print(f"变更已激活,undeploy操作完成")
        disconnect()
    except Exception as e:
        print(f"undeploy操作执行失败: {str(e)}")
        traceback.print_exc()  # 打印错误堆栈,便于排查问题
        # 异常时回滚编辑会话(如果已进入编辑状态)
        try:
            cancelEdit()
            print("已取消未提交的编辑会话")
        except:
            pass
        disconnect()

关键逻辑说明

  • 已部署应用校验:通过cmo.getAppDeployments()获取所有部署的MBean对象,用列表推导式提取每个应用的名称,再通过in操作符快速判断目标应用是否存在
  • 提前退出机制:若应用未部署,直接打印提示并断开连接返回,避免执行后续无意义的编辑、停止、卸载操作
  • 异常处理增强:替换原代码的裸except为捕获具体Exception,同时打印错误堆栈信息;异常发生时尝试取消编辑会话,防止遗留未提交的变更
  • 流程优化:将连接和校验步骤放在编辑操作之前,减少不必要的资源占用

内容的提问来源于stack exchange,提问作者rndm_acct1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:35:21