记录一发javaweb项目升级的血与泪

最近手头有个公司的老项目使用的是tomcat5.5 jdk1.6,

使用框架struts2+ibatis

由于客户方提出项目存在bug是因为tomcat5.5存在漏洞引发的

故项目经理要我对此项目进行升级

升级目标:jdk1.7,tomcat8.5    (听一个算是公司大牛的同事说他们测试过tomcat8.0也存在漏洞,虽然不知道他们是怎么测试的)

在升级的过程中出现了一个问题,问题是这样的

当我在eclipse中运行项目的时候 项目可以正常跑动,但是当我把项目打成war包之后部署到tomcat8.5中运行的时候,

问题出现了。当我进行登录的时候 发现tomcat报出空指针,这个空指针指向的是下面这句代码

这个sqlMap.getSqlMap()返回的是个null

于是我进入了这个方法,发现在下面这一句的时候

sqlMap怎么也接收不到SqlMapClientBuilder.buildSqlMapClient(reader);返回的值。

我屮艸芔茻 这就很奇怪啊!!!

于是立马把排查目标放在了ibatis的jar包身上

网上说ibatis-2.3.4.726.jar这个版本存在着一些问题 于是我又换了ibatis的jar包

。。匆匆好几天过去了(由于项目经理经常出差,问了两个同事 均不得而知,只能自己一个人排查了 )

种种原因都排查了 于是想可能是jar包版本和jar可能存在冲突的原因

由于个人能力有限 于是带回住处跟小伙伴一起讨论排查

17:30下班19:00到家 跟小伙伴一直排查到凌晨3点钟

恶魔妈妈买面膜。。。 小伙伴也没办法了 结果就一个 java.lang.NullPointerException

小伙伴也没办法了 最后下了一个可能是jar包冲突的结论!

当项目经理回来的时候我立刻向老大汇报了情况 

老大在他自己电脑上测试说没问题 what???没问题???

老大用的tomcat9测试的 然后用了我发给他的tomcat8.5测试了一下

这是出现了跟我相同的问题 老大说是tomcat的问题 

于是我下了tomcat9 发现9需要jdk1.8支持

于是安装了jdk1.8 这时候怎么运行都不行的war包果然可以跑起来了 

嘿~ 难道真的是tomcat8.5的原因 但想一下觉得没道理啊 于是发现了jdk1.8输出的是中文的日志信息

而我之前的jdk1.7输出的日志信息是英文的 加上想起之前三更半夜跟小伙伴一起debug测试的时候发现jdk很多类进不去

所以猜测有可能是jdk的原因,于是用jdk1.8再次运行tomcat8.5 嘿~ 果然成功登陆进来了

随后又想到应该不是jdk1.7版本的原因 而是我个人使用的jdk1.7.0_17的原因 于是下载了另一个版本的jdk1.7.0_80(我并不清楚jdk的英文版和中文版)只知道jdk1.7.0_80输出的日志信息也是中文的 

例如: jdk1.7.0_17输出警告就是"Warning" 而jdk1.7.0_80直接就是"警告"这俩字

最后对比了jdk1.7.0_17和jdk1.7.0_80  发现直接大小差距巨大,而一个子版本的推进我认为是不可能有这么大的改动的 

jdk1.7.0_17 大小90.4M 

jdk1.7.0_80  大小140M

问题解决了 是我使用的jdk1.7.0_17版本的原因 (可能是盗版)

最后附上成功的图

公司做物联网的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值