在tomcat中部署spring boot war应用

在tomcat中部署spring boot war应用

spring boot是一个约定优于配置框架,让我们快速搭建spring项目。tomcat是最流行java servlet容器之一。
默认情况下,Spring Boot构建了一个独立的Java应用程序,它可以作为桌面应用程序运行,也可以配置为系统服务,但在某些环境中,我们无法独立安装新服务或手动运行应用程序。

与独立应用程序相反,Tomcat是作为服务安装的,可以在同一个应用程序进程中管理多个应用程序,从而避免为每个应用程序设置特定的设置。

文本我们打算创建一个简单spring boot 应用,并让其运行在tomcat中。

搭建spring boot 应用

我们使用starter模板来搭建一个简单的Spring Boot web应用程序:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>2.0.2.RELEASE</version> 
    <relativePath/> 
</parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies>

除了标准的@SpringBootApplication之外,不需要其他配置,因为SpringBoot负责默认设置。我们添加了一个简单的REST端点来返回一些有效的内容:

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection<String> sayHello() {
        return IntStream.range(0, 10)
          .mapToObj(i -> "Hello number " + i)
          .collect(Collectors.toList());
    }
}

现在我们执行 mvn spring-boot:run命令运行应用程序,启动浏览器输入地址http://localhost:8080/hello检查结果。

创建Spring boot WAR

Servlet容器期望应用程序满足一定部署约定。对于Tomcat约定是Servlet API 3.0。为了让我们应用满足这些约定,需对应用代码进行一些小的修改。
首先,我们需要打包war应用,而不是jar。因此,需修改pom.xml:

<packaging>war</packaging>

然后,修改最终war文件名,避免包括版本号:

<build>
    <finalName>${artifactId}</finalName>
    ... 
</build>

接下来增加tomcat依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency>

最后,通过tomcat初始化Servlet上下文,需实现SpringBootServletInitializer接口:

    @SpringBootApplication
    public class SpringBootTomcatApplication extends SpringBootServletInitializer {

    }

通过执行mvn clean package命令,生成可在tomcat中部署的war应用。最终war生成路径为target/spring-boot-tomcat.war (假设Maven artifactId 是 “spring-boot-tomcat”)。

通过上面设置让我们的spring boot应用成为非独立运行的应用(如果你让其回到独立运行模式,可以从tomcat依赖中删除provide范围)。

部署war值tomcat

在tomcat中部署war,需下列几个步骤:

  1. 下载tomcat,解压值tomcat文件夹
  2. 拷贝war文件值tomcat/webapps/文件夹下
  3. 从终端定位至tomcat/bin目录并执行命令

    3.1. windows执行catalina.bat

    3.2. 类Unix执行catalina.sh

  4. 执行http://localhost:8080/spring-boot-tomcat/hello进行验证

上述步骤比较简单,详细内容可以参考相关文档。

总结

本文我们创建一个简单spring boot应用,然后改变其为非独立运行的war部署在tomcat中。

猜你喜欢

转载自blog.csdn.net/neweastsun/article/details/81603100