卸载补丁的流程
金蝶云社区-qiuyan_pan
qiuyan_pan
0人赞赏了该文章 2,164次浏览 未经作者许可,禁止转载编辑于2015年12月22日 19:10:43
卸载补丁的流程
1.过滤勾选的未安装的补丁,只允许卸载1个补丁
2.判断是否是补丁还原点之前,在补丁还原点之前不允许卸载
3. 判断卸载补丁类型a. 判断是否为数据修复补丁,不允许卸载数据修复补丁b. 判断是否为PTM补丁,不允许卸载PTM补丁c. 判断补丁是否包含在已安装的的合并补丁中,若被包含,则不允许卸载
4 判断卸载补丁的依赖关系 (需要再看代码熟悉 PatchPage – 1661 Line)a. 判断是否有跨模块依赖b. 判断是否有模块间直接依赖
5设置是否生成子系统树,查看要卸载的补丁的明细------------------------------------------------------------以上为客户端-----------------------------------------------------------------------------------------------------------以下为服务端-----------------------------------------------
6 准备工作a. 给客户端传过来的补丁列表,设置是否包含元数据,是否为BOSModular标志b. 收集2次开发元数据包和行业差异元数据包的路径信息,准备拷贝元数据c. 停止群集控制器,停止eas应用服务d. DEP …// 调用java任务,异常不抛出,以免影响补丁安装I 解析任务DEP任务列表 eas\admin\config\extdefinetask.xmlII 调用任务列表里面的方法,执行(安装/卸载 补丁)任务e. 停止EAS模块
7 卸载补丁a. 读取对应的zip 补丁包 初始化PatchInfo (安装后不能删掉补丁包的原因)b. 从derby数据库读取补丁组件信息c. 判断是否为管理控制台补丁,是否为PTM&ANT补丁d. 检测是否可以卸载(强制卸载则不检测):遍历补丁组件,计算补丁组件(环境中)的MD5值A。与derby数据库中该组件的MD5值B比对。如果有覆盖(A!=B),根据环境中的组件MD5值A反查到补丁C,最后给出提示 该组件被补丁C覆盖。e. 从补丁安装的备份中恢复组件(强制卸载只恢复MD5值一致的组件)I 确定备份文件夹 以及 卸载备份文件夹 (正常的,bosModular情况下的)(确定从何处恢复 [最新的安装备份文件夹]),如果包含管理控制台组件,需要获得管理控制台的备份文件夹II 循环遍历组件列表,判断该组件是否存在于备份文件夹中。若不存在,则抛异常III 设置事务管理器,卸载过程中如果出现错误,可以回滚。IV isWebXML( ) 如果需要合并web.xml配置文件,则记录在webXmlFilePatch (List) V 循环遍历组件列表,依次恢复组件。 V-1 判断该组件是否为元数据组件,是则设置需要合并行业元数据标志。 V-2 判断是否需要合并二次开发元数据 ,设置合并二次开发元数据标志 V-3 判断是否为新组件,是则直接删除。删除失败则提示卸载失败,事务回滚 V-4 若不为新组件,判断环境中是否存在该组件,存在则设置”文件修改事务”,若不存在则设置”文件创建事务”,从备份文件夹拷贝覆盖环境的组件确认一下拷贝是否成功,在日志里面输出确认信息
8 generateOddsJAR
9 删除卸载过程中产生的临时文件
10 更新该卸载补丁在derby中的补丁安装状态,补丁安装时间置空,补丁实际依赖关系。
11 删除该卸载补丁在derby中的组件信息 即删除对应组件表PATCH_COMPONENT中字段patchName等于该卸载补丁名称的记录
12 根据补丁名称删除补丁信息 delete from PATCH_Info where patchName=?; (删除补丁信息?若要删除,为何10中又要更新呢?)
13 若是强制卸载 , 需要把卸载的时间写入derby中
14 自动合并各web.xml – 该步骤已经被注释掉 忽略…
15 重新生成EAS组件信息列表的配置文件,eascomponents.xml
16 启动管理控制台eas模块
17 DEP …// 调用java任务,异常不抛出,以免影响补丁安装。调用任务列表里面的方法,执行(安装/卸载 补丁)任务
18 合并行业元数据
19 合并二次开发元数据
20 生成子系统树