You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JBoss或Tomcat上部署Spring Cloud Gateway 2.1?能否打包WAR部署?

没问题!你想要把基于Spring Framework 5和Project Reactor构建的Spring Cloud Gateway打包成WAR包,部署到Tomcat、JBoss这类传统Servlet应用服务器的需求,完全是可行的,而且Spring官方也给出了明确的支持依据。

可行性说明

Spring WebFlux作为Spring Cloud Gateway的底层依赖,本身就支持Servlet 3.1及以上版本的容器,包括Tomcat、Jetty,自然也兼容JBoss这类符合Servlet规范的传统应用服务器。这意味着你完全可以按照标准的WAR包部署流程来操作。

具体实施步骤
  • 调整打包配置与依赖

    • 如果使用Maven,在pom.xml中将<packaging>设置为war;如果是Gradle,修改build.gradle启用war插件配置。
    • 排除Spring Cloud Gateway默认内置的Netty容器,避免和服务器的Servlet容器冲突。比如Maven中可以在spring-boot-starter-webflux依赖里排除spring-boot-starter-reactor-netty模块。
    • 添加Servlet API依赖,并设置为provided scope,确保不会和服务器自带的API重复打包。例如Maven中引入javax.servlet-api或jakarta.servlet-api(根据服务器版本选择),将scope设为provided。
  • 修改启动类

    • 让你的Spring Boot启动类继承SpringBootServletInitializer,并重写configure方法,这样Spring Boot就能在Servlet容器环境下初始化应用:
      @SpringBootApplication
      public class GatewayApplication extends SpringBootServletInitializer {
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
              return application.sources(GatewayApplication.class);
          }
      
          public static void main(String[] args) {
              SpringApplication.run(GatewayApplication.class, args);
          }
      }
      
  • 服务器适配注意事项

    • 确保目标服务器版本满足Servlet 3.1+要求:Tomcat需要8.5及以上,JBoss EAP需要7及以上版本。
    • 对于JBoss,建议启用NIO连接器,这样能更好地适配Spring WebFlux的非阻塞特性,发挥其性能优势。
    • 部署时直接将生成的WAR包放入服务器的部署目录(比如Tomcat的webapps,JBoss的deployments)即可,和普通WAR包部署流程一致。
官方依据

Spring官方文档明确说明:Spring WebFlux支持Tomcat、Jetty、Servlet 3.1+容器,这为Spring Cloud Gateway的WAR包部署提供了核心支持。

内容的提问来源于stack exchange,提问作者fcm2009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:47:27