满纸荒唐言,一把辛酸泪。
周五,周六都是晚上12点后回去的。周天晚上7点走人,周一12点后打卡的。突然跟着了魔似的,一切都很不顺。
今天是最悲剧的,从上午11点升级ST发现,荣耀首页跳转报堆栈溢出。首先立马跑了一把本地,确认代码没有问题。
没过多一会儿好多同事都在叫,荣耀首页进不去,我就无语了。
第二个想法,就是远程DEBUG,等到同事们都在睡午觉的时候,就给ST加了DEBUG参数,远程调试。
当连上服务器开始调试的时候悲剧出现了,线程到处乱跳,当时就彻底无语了。走几步就到finally里面了,然后又
跳出来,接着以前的走。
再接着就是终极解决方式了。本地是OK的,我就首先替换jar文件,问题没解决,然后替换配置文件,有效果了。
一个resource.properties换成本地就好了。喜出望外,之前曾碰到过启动时没有多少日志就直接报错退出的情况,最终
也是通过这种方式解决的。
13点半了,同事们都醒了。去掉服务器的调试参数,让其恢复正常。跟测试讲明了情况,这次名正言顺的更新ST,
又悲剧了,我的应用好了,其他应用都坏了。立马回退,继续查找。
无赖之下,想到,我本机是好的,那我找到另一台机器若OK那就是ST环境的问题。FUCK了,同事的机器也出现了
异常。给其更新resource.properties后好了。后来又一个同事的环境也正常了。现就很确定是ST环境的问题了。
定位期间曾想过一些规避该问题的方案,springmvc不能正常跳转,那我就用response.sendRedirect,做好后发现
本地OK,ST照样不行。后来干脆来更绝的,直接写servlet,写完了之后运行,报了一堆错,完全彻底被打败了。并且该
方式估计也不能被接受,也就放弃了。
晚饭没吃,接着整。后找来了一个牛X同事,帮我想。中午他看过一会儿此问题,没有什么结论,继续忙他的去了。
此问题不除,他也会受累。所以晚上加班,他也就定心的找。听了我的一些叙述后,他建议若真解决不了,则用servlet
代替。先百度了一下错误信息,没有得到更多线索。根据错误找到源代码,定位死循环的代码。看完之后也迷茫了,没有问
题啊。后没过多久他就想到了,是不是有人在其他的定制的jar包里也放了springmvc的配置文件,导致多个同样的解析器。
一搜还真有,删除后,一起正常了。
探索问题期间,最大的一个弊病就是迷茫,猜疑。当时最怀疑的是resource.properties的编码问题,ISO8859-1,
UTF8,UNICODE傻傻分不清楚。第二个就是我的环境一直用的最新的工具,servlet3.0,最新的eclipse,同事都用的统一的。
这是当时最郁闷的点,难不成真成了自作自受。当定位到resource.properties后,发现了ST上比本地多一些配置。我把本地
文件放上去后,我的应用就好了。若继续深追,就会发现,这些配置属于广东的jar包,而就在这个包里面定义了一份与
基线一模一样的配置文件。