今天lz把項目重新傳到服務器上后,重啟tomcat遇到個問題,就是這個tomcat怎么都不啟動這個項目,別的項目都沒事,一番查找后發現問題所在。
我們先建個SpringBoot工程,重現一下問題:
寫了一個簡單的controller便於訪問測試
可以看到是可以訪問到的,接下來我們刪除 ServletInitializer 類。
現在的項目結構變成這樣:
重新運行一下工程,然后可以看到還是可以訪問到的。
然后我們將刪掉ServletInitializer 類的項目上傳到服務器,看下tomcat啟動日志。
可以看到tomcat就像完全不理睬項目一樣,也無法訪問到。
tomcat是成功啟動了,但是無法訪問到工程里的控制器。然后我們將ServletInitializer 類重新加入項目,重啟tomcat。
這次tomcat啟動了項目,也可以訪問到控制器了。控制器的內容沒有修改,訪問到就可以。
SpringBoot項目想運行在第三方tomcat上必需實現SpringBootServletInitializer接口的configure方法才能讓外部容器運行,這就是我遇到的問題所在;因為之前這個項目是正常運行的,今天是重新往服務器上傳代碼,遇到的這個問題,初步懷疑是有人把這個類刪掉了然后提交了代碼,上傳前在本地可以成功運行也就沒注意。還有就是想把SpringBoot工程從jar轉換為war的同學,一定要注意這個地方。