Spring Boot应用程序在部署到Tomcat时提供404,但与嵌入式服务器配合使用
在使用Spring MVC提供Web内容的指导下,我正在创建一个Spring Boot Web应用程序,我可以使用嵌入式Tomcat实例以及独立的Tomcat 8服务器运行它。
当作为java -jar adminpage.war
执行时,应用程序按预期工作,当我访问http://localhost:8080/table
时,我看到了预期的结果。 但是,当我部署到Tomcat 8服务器时(通过将adminpage.war
删除到webapps
目录中),当我访问https://myserver/adminpage/table
时出现404错误。
catelina.log
和localhost.log
文件在Tomcat服务器上没有任何帮助。
任何人都可以建议我在哪里做了错误的配置? 我在过去使用Spring Boot部署RESTful服务时遇到了同样的问题,但这是我第一次涉足Web应用程序。
我的申请文件:
src/main/java/com/.../Application.java
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
src/main/java/com/.../MainController.java
@Controller public class MainController { @RequestMapping("/table") public String greeting(Model model) { model.addAttribute("name", "Fooballs"); return "table"; } }
src/main/resources/templates/table.html
pom.xml
4.0.0 com.foo adminpage 1.0-SNAPSHOT war org.springframework.boot spring-boot-starter-parent 1.4.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-devtools true 1.8 UTF-8 adminpage org.springframework.boot spring-boot-maven-plugin
我忘了调整我的Application.java
文件来扩展SpringBootServletInitializer
并覆盖configure
方法。
更正文件:
@SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } }
帽子提示https://mtdevuk.com/2015/07/16/how-to-make-a-spring-boot-jar-into-a-war-to-deploy-on-tomcat/指出我的错误。
有关在Spring Boot官方文档中创建可部署war文件的更多信息。