欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

思考才能有效的解决问题---- 

程序员文章站 2022-07-11 23:48:39
...

思考才能有效的解决问题----<WEB应用在捕捉异常并处理时,请不要使用System.exit(1)!!!! > 

为了将此事铭记,我不得不痛苦的与事件相关的整个过程慢慢将回忆起来:

  2010年10月7日上午,突然接到客户反映,说客户的某服务器上多个JSP网站无法打开,管理员报告说Tomcat WEB服务器停止了服务,且无法再次打开服务。

         火速赶往检查。发现无论如何都打不开tomcat服务,惊奇之中心情忐忑。怪事~~~

   带着疑惑,我手动打开tomcat 目录下的bin/startup.bat ,当见到稍显可爱的tomcat 打印黑板时,心中顿觉一松。然而不到三秒,在CMD运行窗口打印完tomcat服务启动相关的一些信息后竟从我眼前神秘消失!当下愕然!再次startup.bat,瞧见打印信息中唯一一句也是最后一句打印报告: [Fatal Error]:-1 -1 Premature end of file。

   心中奇怪,“果断”的将log4j日志等级调高至DEBUG ,然后心中满怀期待的再次startup 。可惜,打印信息只出现一句 DEBUG: log4j initiated... 然后tomcat运行窗口再次神秘消失。最后一句依然是: [Fatal Error]:-1 -1 Premature end of file。

   擦~~顿觉冒汗。已经无故障运行了半年的应用此时为何突然出现故障?而且如此神奇,诡异!究竟是什么问题呢?

   介绍一下该服务器的混乱环境。

   由于是大型企业服务器,上面运行着该企业数量众多的网站应用。从ASP到.net,再到PHP,然后是JSP。数据库也是种类繁多,从sqlserver 到 mysql ,甚至于oracle也有安装,综合来说是一个无序而管理混乱的服务器,加上里面的网站应用编写者水平层次不一,导致木马时有发生,简直就像一个混乱沼泽。

   该服务器上的JSP容器采用的是tomcat,tomcat版本一直使用着tomcat6.18,而里面的多个应用有单纯的JSP&SERVLET,也有SSH1,还有SSH2。而这些网站数量加起来不下十数个。

   心情忐忑,直奔百度和谷歌。网上他人的记录,有web.xml 配置错误,到SSH包冲突,再到java环境变量配置错误,重装tomcat,重装JAVA,再到种种说不清的异常,每一个都让我惊疑不定。只能硬着头皮,按着线索一个个检查。然而由于完该tomcat 容器下面的应用众多,所耗时间之巨真是令人抓狂!

   一个个错误的猜测,一个个的方案尝试,长达漫长的二天!这二天,可谓是绞尽脑汁,一个个测试都以期待开始,而最终却都以失败告终。二天之后仍无头绪!而客户在不停摧促!心中压力逾来逾重!

   二天后的今天,在经历极其痛苦的折磨之后,极其疲惫的我想了个办法,将应用逐个分离,然后测试,最终找到了罪魁祸首,某XXX应用。只要有该XXX应用存在,tomcat必不能启动!!至此心中总算松了一口气! 

   强打起精神单独测试该应用的源代码,最后最终发现了万恶之源呀,在几万行代码中的一句与xml有关的短短的

 System.exit(1) 藏在某XML文件异常捕捉处理中。汗~~

 当发现它时,我的痛苦之情到了无以复加的地步!看着它只觉得这行代码极其罪恶!万恶的System.exit(1) ,你害得我好苦啊!

 总结:不管,这句System.exit(1)是在代码测试的时候某人无意的添加的,又或者是在其余种种情况下添加的,以至于它害得我二天多么的心神疲惫,这些都不重要了。重要的是经过这次事件后,发现我严重的缺乏独立思考的能力,过于依赖百度与谷歌。

  勤劳也许能把一件事情做完,但只有用心才能把一件事件做好啊!