【问题标题】:How can I customize spring boot embedded tomcat thread pool?如何自定义spring boot嵌入式tomcat线程池?
【发布时间】:2020-07-10 21:22:50
【问题描述】:

Tomcat 架构由以下元素组成: Server => Service => Engine => Host => Context

在配置标准Tomcat服务器时,我们可以通过在server.xml文件中指定以下内容来配置自定义线程池:(以下为伪代码)

<Server>
  <Service name="Catalina">
    <Connector port="8080"/>
    <Executor name="custom-pool" className="my.package.poolImplementation" />
    <Engine name="Catalina" defaultHost="localhost">  
      <Here be more elements />
    </Engine>
  </Service>
</Server>

(具体来说,Executor name="custom-pool" className="my.package.poolImplementation"

如何配置 Spring Boot 以以编程方式允许相同的行为?
(不使用 Spring 配置文件)

无论我在哪里搜索,或者我如何努力,我都找不到任何答案或示例。
提前致谢

【问题讨论】:

  • 看看你能不能设置这样的属性stackoverflow.com/questions/51703746/…
  • @pvpkiran 我已经尝试过了,但无济于事。您可以按照该问题中指定的方式引用 tomcat 实例,但您只能通过这种方式提供内部 tomcat 执行器:TomcatWebServer server = (TomcatWebServer)factory.getWebServer(); server.getTomcat().getService().addExecutor(/*只允许org.apache.catalina.Executor*/);

标签: java spring spring-boot tomcat


【解决方案1】:

我查找了一些源代码(请参阅TomcatServletWebServerFactory.java/ServletWebServerFactoryConfiguration.java)并找到了一种方法。

@Bean
public TomcatProtocolHandlerCustomizer<?> tomcatProtocolHandlerCustomizer() {
    return protocolHandler -> {
        protocolHandler.setExecutor(...);
    };
}

【讨论】:

  • 我会调查的。我目前正在使用不同的解决方法,但我也会尝试这个
猜你喜欢
  • 2021-04-30
  • 2016-04-12
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多