【问题标题】:Set default application server Spring Boot设置默认应用服务器 Spring Boot
【发布时间】:2019-07-25 12:31:55
【问题描述】:

我的类路径上有多个应用程序服务器,即通过 spring-boot-starter-webflux 的 Netty 和通过另一个依赖链的 Tomcat。如何确定在 Spring Boot 中使用哪个应用程序服务器?

目前,正在启动 Tomcat 而不是 Netty。

重要提示:我不能排除其中任何一个,CXF使用Tomcat,WebClient使用Netty。

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    只需使用正确的 spring-boot-starter-package

    https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.html

    在你的情况下,它可能是spring-boot-starter-reactor-netty

    排除多个 JEE 嵌入式容器并删除不需要的容器也是明智之举。

    【讨论】:

    • 我已经在一个完全空的 web mvc 项目中包含了用于测试目的的 starter Jetty,它仍然可以启动 Tomcat。我不能排除 Tomcat,因为 CXF 依赖于它。是否有可以从可用容器中进行选择的配置?
    • 我没有在其中找到任何线索。 :)
    【解决方案2】:

    您可以在启动时直接在您的配置中指定应用程序是响应式的

    @Configuration
    @EnableAutoConfiguration
    public class Application {
        public static void main(final String[] args) {
            final SpringApplication springApplication = new SpringApplication(Application.class);
            springApplication.setWebApplicationType(WebApplicationType.REACTIVE);
            springApplication.run(args);
        }
    }
    

    【讨论】:

    • 不幸的是,Netty 和 Tomcat 都支持 REACTIVE,但这是迄今为止最接近我需要的建议。
    • 我还没做过,但我怀疑如果你注入一个 @Order 值较低的 NettyReactiveWebServerFactory bean,那么它会优先于 Tomcat
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2014-12-20
    • 2019-02-15
    • 2015-05-07
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多