山东现网WEBSMAP页面显示异常案列分析 5月5号,山东现网在调试过程中发现,WEBSMAP登陆以后界面显示异常,如下图:
5月5日客户在使用WEBSMAP时发现页面登陆有问题,下面把解决此次问题的思路整理出来,让以后遇到此类问题的兄弟能够好好参考: 现网发回的日志 ======Service version:====== ServiceName: /insms/config ServiceVersion: V2.0D503 ServiceName: /insms/fvpn ServiceVersion: V1.00 ServiceName: /insms/ip17951 ServiceVersion: V2.0D71 ServiceName: /insms/iuser ServiceVersion: V3.2DP01 ServiceName: /insms/oprm ServiceVersion: V2.0D503 ServiceName: /insms/sms ServiceVersion: SMSD700 ServiceName: /insms/sysmanager ServiceVersion: V2.0D503 ServiceName: /insms/vpn ServiceVersion: VPNV6.2DT0SP07 ServiceName: /insms/winrpt ServiceVersion: V2.0D503 ServiceName: insms ServiceVersion: V2.0D503 ServiceName: insms/uc2 ServiceVersion: DI02 ServiceName: mc ServiceVersion: V100R001D330 批量修改集团成员首页的显示是根据页面定义的字段名,然后跟数据模板进行匹配,如果匹配成功,页面就显示正常,否则就会显示异常,所以此次问题应该从模板下手: 思路一:问清楚现网使用的是哪个版本,然后叫现网把service\insms\vpn\config目录下的模板传回来,跟我们开发这边的对应版本进行比对,如果发现现网的模板与我们的模板不匹配,我们只需要把正确的模板发给现网,此问题即可解决 思路二:如果现网的模板和研发这边的模板匹配,那我就要另找原因了。因为读取模板是基线的代码,所以我不知道具体内部逻辑,但是我知道页面读取模板以后肯定要存放在一个地方,这个地方就是HSQLDB数据源,WEBSMAP自带的内部数据库,知道数据库了我还不知道具体是插入哪个表,没关系,在service\insms\db下面有个websmap.log文件夹,具体插入表的信息全部在这里,分析websmap.log后我得知,模板的数据分别放入WEBSMAP_DTINFO和WEBSMAP_DTDATA这两个表中,WEBSMAP_DTINFO主要存放xml的头文件信息,WEBSMAP_DTDAT主要存放的是模板中定义的各个字段名,这下简单了,让现网把这两个表的数据全部导出来然后发回给研发,然后我对比了一下2个数据文件,找到了问题的根源,因为现网把WEBSMAP_DTDATA.filename字段定义成了char(18),所以导致有一个模板字段因为超出数据范围而把后面的字节给截取了,导致模板内的数据和我们页面定义的数据不匹配,从而出现问题,现网把这个字段扩充成char(19)位以后,此问题解决。 思路三:后来通过现网发回来的数据得知,现网平台的界限版本为V2.0D503,而我们基线版本为v2.0d403SP02,WEBSMAP有一个解决乱码的补丁包是在v2.0d403SP02基线上修改的,所以现网在升级过程中因为没有注意到自家环境上的基线版本为V2.0D503,而把websmap-platformv2.0d403SP02_emend.zip这个补丁包解压后把新版本的jar文件给替换掉了,所以才会引发上图的问题,解决办法就是用现网备份的jar包替换升级后的jar包 现在回想起来,其实定位的思路很简单,但是这个问题我们整整定位了一个星期,为什么? 道理很简单,就是还没有把WEBSMAP弄到炉火纯青的地步,没有全部掌握WEBSMAP,这也是我2011年需要更加努力的地方,还有一点是非常重要的,那就是如何去于现网沟通,在这次沟通的过程中我发现了一个问题,就是同样是现网的2个人,但是说出问题描述的时候是截然不同的,这样就会给研发在定位问题的时候造成很大的困难,因为只有于现网沟通好了,才会有利于自己尽快找出问题的所在,从而快速的解决问题。 |