在tomcat上安装spring-boot app

时间:2016-04-18 21:58:01

标签: tomcat spring-boot

我按照一个简单的指南,在我的本地创建了一个基于spring-boot的Web应用程序,使用嵌入式tomcat,它工作正常。下一步我试图将它部署到远程linux tomcat服务器上。我首先按照以下步骤操作:

(1)更新应用程序的主类以扩展SpringBootServletInitializerSpringBootApplication是我以前的主要班级

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日志时,没有异常,服务器启动。

3 个答案:

答案 0 :(得分:2)

将war文件部署到外部容器时,

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。