基于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
相关产品推荐
相关产品推荐

