Skip to content

REST over Servlet(WAR)

REST over Servlet(Spring Boot Embedded) 类似,可以将Spring Boot应用打包为 WAR,然后放到独立安装的 Tomcat 容器运行。 它们的工作机制一样,只是在Spring Boot应用配置方面有些差异。

WAR相关Web容器参数需要结合Tomcat配置,这里不详细介绍。 Java Chassis配置参数和Embedded一样。

basic-tomcat 提供了开发例子。

使用 SpringBootServletInitializer

Spring Boot启动类需要继承 SpringBootServletInitializer, 并且设置 WebApplicationType.SERVLET。

@SpringBootApplication
public class ProviderApplication extends SpringBootServletInitializer {
  public static void main(String[] args) throws Exception {
    try {
      new SpringApplicationBuilder()
          .web(WebApplicationType.SERVLET)
          .sources(ProviderApplication.class)
          .run(args);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

配置文件端口

REST协议监听端口需要保持和Tomcat端口一致。

servicecomb:
  # port should same as tomcat
  rest:
    address: 0.0.0.0:8080

依赖

需要在依赖中添加:

<dependency>
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>java-chassis-spring-boot-starter-servlet</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <scope>provided</scope>
</dependency>

微服务网关 Edge Service

微服务网关Edge Service不支持Servlet协议,不建议将其部署到Tomcat。仍然使用可执行 jar 包部署。