用友股份-LE服务支持部技术方案--《HR自定义预警在水平集群下不生效问题解决案例》建立日期:2013-04-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00382/6文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-04-01魏享林V1.03目录HR自定义预警在水平集群下不生效问题解决案例............................................................4一.系统环境..................................................................................................................4二.问题描述................................................................................................................4三.检查分析................................................................................................................4四.解决方法................................................................................................................64HR自定义预警在水平集群下不生效问题解决案例一.系统环境NC版本:NC57操作系统:WindowsServer2003中间件及集群方式:Was水平集群二.问题描述自定义项目转正到期日期预警不生效,该预警是个登录触发预警。三.检查分析1.查看操作过程,并检查预警的配置,发现程序是动态生成一个class文件作为该类型预警的插件。2.直接登录具体端口做测试,发现登录主机时,预警消息可以生成,而登录从机则不行。3.检查服务器配置,发现从机上没有配置运行预警服务的server,检查ierp\bin目录,发现从机上的文件没有同步主机上的。怀疑是预警服务的配置问题,将主机的ierp\bin目录同步到从机上,单启从机上一个server,发现问题依旧。4.询问开发人员得知,登录预警的运行并没有调度到配置了预警服务的server上运行,而是在登录的那个Server上运行。以前一直以为登录5预警也在配置了预警服务的server上运行,检查的日志都是主机上的日志。5.检查从机上的预警日志,发现如下报错信息,提示预警插件类不存在6.检查从机上的代码目录,发现从机上确实没有生成动态插件class文件,将该class文件拷贝到从机后,再启从机上一个Server,发现预警消息可以生成。7.检查相关代码实现,发现生成class文件的方法都会调度到master所在的机器上生成,且代码确实做了同步处理,但同步代码时,会把代码向运行预警服务的机器上同步。生成class文件的接口的upm文件如下,cluster="SP",该接口会调度到master上运行。PubAlarmImpl同步class文件的代码处理如下:调用PaUtils.clusterFile方法做文件同步处理,查看PaUtils.clusterFile的实现:6可以看出,PaUtils的文件同步方法是将文件同步到配置了预警服务的server上,在这个项目中,配置预警服务的server在master所在机器上,导致文件无法同步到从机。8.修改PubAlarmImpl中同步class文件的方法,将文件同步到非master所在机器上,打上补丁后,经测试,问题得到解决。四.解决方法修改程序中同步class文件的处理,将文件同步到同步到非master所在机器上。打补丁解决,补丁号为:NC_HR_PUB-NC5.7-Patch-2013035-204381784.rar