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 包部署。