记一次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時會報錯。
總結
以上是生活随笔為你收集整理的记一次Tomcat服务部署,启动过滤器异常,问题查找过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 标签印刷
- 下一篇: Windows系统常见中文字体英文名称