springboot项目 本地 部署到外部tomcat

最近搞了个demo,springboot项目本地部署到外部tomcat,本来是一件非常简单的事,结果遇到了个坑,说白了还是spingboot原理不熟。。
spingboot其实它并没有完全遵守 servlet3.0 的规范。
springboot会继承一个类SpringBootServletInitializer,在这个类的onStartup方法中,启动了整个Spring容器。
springboot项目 本地 部署到外部tomcat_第1张图片
但是这个demo是我本地用idea生成的maven项目,所以web.xml没有删除,然后本地启动tomcat startup.bat,访问localhost:8080 tomcat页面显示没问题,我以为tomcat启动正常,但是看似没报错,其实还是有问题,搞了我一上午。。去本地tomcat目录的tomcat-8.5\apache-tomcat-8.5.38\logs localhost.2021-03-31.log 该文件有报错信息 ,根据报错信息Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml! 发现 web.xml 配置有问题,一想springboot不需要web.xml,删除后重新打war包 放到tomcat的webapps下,重启tomcat访问正常了!
springboot项目 本地 部署到外部tomcat_第2张图片

springboot项目 本地 部署到外部tomcat_第3张图片

你可能感兴趣的:(springboot项目 本地 部署到外部tomcat)