我按照一个简单的指南,在我的本地创建了一个基于spring-boot的Web应用程序,使用嵌入式tomcat,它工作正常。下一步我试图将它部署到远程linux tomcat服务器上。我首先按照以下步骤操作:
(1)更新应用程序的主类以扩展SpringBootServletInitializer
。 SpringBootApplication
是我以前的主要班级
public class WebInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootWebApplication.class);
}
}
@SpringBootApplication
public class SpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebApplication.class, args);
}
}
@Controller
public class IndexController {
@RequestMapping("/")
String index(){
return "index";
}
}
(2)更新构建配置,以便项目生成war文件而不是jar文件。
<packaging>war</packaging>
(3)标记提供的嵌入式servlet容器依赖项。我之前只有spring-boot-starter-web
我刚刚添加了一个
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(4)我还在application.properties
server.context-path = /springbootdemo
在运行maven-clean和maven-install之后,我得到了我的spring-boot-web-0.0.1-SNAPSHOT.war
,然后将它放入远程服务器中的tomcat webapp,但我在这两个上都获得了404:
http://host:port/springbootdemo
http://host:port/spring-boot-web
http://host:port/spring-boot-web/springbootdemo
应用程序的正确路径应该是什么?在本地运行时,它在http://localhost:8080/上运行,没有应用名称。当我看到服务器catalina.out日志时,没有异常,服务器启动。
答案 0 :(得分:2)
server.context-path
无效。
Tomcat使用战争的全名,减去.war
后缀,用于应用程序的上下文路径。假设您已将spring-boot-web-0.0.1-SNAPSHOT.war
复制到Tomcat的webapps
目录,您的应用将在http://localhost:8080/spring-boot-web-0.0.1-SNAPSHOT处可用。
答案 1 :(得分:1)
答案 2 :(得分:-1)
您可以看到我的回答here。
答案还包含一个演示项目的链接,您可以构建并部署到Tomcat。