记一次Tomcat服务部署,启动过滤器异常,问题查找过程

前言

因工作需要,在搭建新的环境时,需要部署war服务,然后初次选择容器时决定使用tomcat8.5,结果遇到了问题,在同事提醒下使用tomcat9才得以解决,但是不能只解决问题,还需要查询产生原因,故有了以下的问题查询过程,= =!以防万一,以下截图已脱敏。

问题查找

1.服务启动日志

以下为部分启动日志,其他的看的都没有意义,就看那个红框,他说了服务启动失败,所以去看看详细日志去吧。
在这里插入图片描述

2.错误日志

根据提示“”完整的详细信息将在对应的容器日志文件中找到“,去tomcat的log目录下查看localhost.2021-12-03.log文件
在这里插入图片描述
从这可以得知两件事1.过滤器启动异常 2.报错的方法是过滤器的初始化方法,所以到这里明确了下一步要干的事了,去看看Filter。

3.代码比对

Filter所在jar包:servlet-api.jar

因为本地并没有Filter接口所在jar包的源码,所以这里我用了jd-gui进行反编译获得了代码

tomcat8.5:
在这里插入图片描述
tomcat9:
在这里插入图片描述
war包部署的服务使用的:
在这里插入图片描述
在这里插入图片描述
其实到这里就已经有大概的猜测了,在jdk1.8以前,接口默认使用的都是abstract进行修饰,而jdk1.8的新特性就是允许接口使用default关键字,有一个默认方法,所以有可能是部署的项目里存在实现Filter接口,但是没有重写init方法的情况,所以继续查。

4.查找问题

因为实现Filter接口的方法不便于截图,故仅提供查找的方法
在这里插入图片描述
最后查看得知这个方法是存在于私有远程仓库里的一个依赖,而且他的确没有重写Filter的init方法,所以导致在部署到tomcat8.5时报错,因为tomcat8.5使用的Filter中的init是个抽象接口,实现这个接口的类必须重写init方法,可能开发人员当初并没有考虑对低版本的兼容性问题,所以服务部署到tomcat8.5时会报错。

  • 12
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值