SpringBoot端点部署至Tomcat后无法访问问题排查
Spring Boot WAR包部署Tomcat端点无法访问问题排查
1. 修正Tomcat依赖作用域
部署到外部Tomcat时,spring-boot-starter-tomcat依赖会与Tomcat自带的Servlet容器类冲突,必须将其作用域改为providedRuntime,避免打包进WAR包:
修改build.gradle的依赖配置:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // 将tomcat依赖设为providedRuntime,仅编译时使用,不打包 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' // 其他业务依赖... }
2. 确认上下文路径正确性
你访问的路径中user-service-api-0.0.1-SNAPSHOT-plain是WAR包文件名对应的默认上下文路径,需注意:
- 检查Tomcat的
webapps目录,WAR包解压后的文件夹名就是当前应用的上下文路径,确保访问路径中的上下文部分与之一致 - 若需自定义上下文路径,在
src/main/resources/application.properties中添加配置:
此时访问路径变为server.servlet.context-path=/user-service-apihttp://localhost:8080/user-service-api/api/v1/users
3. 验证ServletInitializer配置
确保ServletInitializer的configure方法正确指向Spring Boot主类:
- 确认主类
UserServiceApiApplication的包路径与ServletInitializer中指定的一致,若主类不在同包,需写出全限定类名:return application.sources(net.bean.userserviceapi.UserServiceApiApplication.class);
4. 查看Tomcat日志定位异常
若以上配置都正确,查看Tomcat的logs/catalina.out或localhost.log日志,里面会记录应用初始化失败的具体原因(如类冲突、Bean加载错误等),根据日志信息进一步排查。
内容的提问来源于stack exchange,提问作者CodeGrinder
相关产品推荐
相关产品推荐

