在springboot中扩展tomcat的executor

扩展executor

public class AdvancedThreadExecutor extends StandardThreadExecutor {

    @Override
    protected void startInternal() throws LifecycleException {
        super.namePrefix = "custom-tomcat-";
        super.startInternal();
        executor.setRejectedExecutionHandler(new RejectedExecutionHandler() {
            @Override
            public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
                //add stat
                throw new RejectedExecutionException("Task " + r.toString() +
                        " rejected from " +
                        executor.toString());
            }
        });
    }
}

配置

@Component
public class EmbeddedTomcatConfig implements EmbeddedServletContainerCustomizer {

    private static final Logger logger = LoggerFactory.getLogger(EmbeddedTomcatConfig.class);

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        if(container instanceof TomcatEmbeddedServletContainerFactory){
            TomcatEmbeddedServletContainerFactory factory = (TomcatEmbeddedServletContainerFactory)container;
            factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    AdvancedThreadExecutor myExecutor = new AdvancedThreadExecutor();
                    connector.getService().addExecutor(myExecutor);
                    ProtocolHandler handler = connector.getProtocolHandler();

                    Http11NioProtocol http11NioProtocol = (Http11NioProtocol)handler;
                    http11NioProtocol.setExecutor(myExecutor);
                }
            });
        }
    }
}

验证

curl -i http://localhost:8080/dump
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • springboot 中对tomcat容器做优化, 注意是否只启动了一个tomcat和一个connector
    tommyhxh阅读 1,313评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 前言 主题是Mybatis一级和二级缓存的应用及源码分析。希望在本场chat结束后,能够帮助读者朋友明白以下三点。...
    余平的余_余平的平阅读 1,349评论 0 12
  • 从一个人最主要的功业上并不总是能看出他的品行的优劣,而往往某一微不足道的行为,能更好、更清楚地显示一个人的性格。—...
    狂奔君阅读 531评论 0 0
  • (一) 早晨醒来阳光正照穿窗帘我睡在昏暗的床上望着窗子上的光亮在想我最先醒来的是不是也是眼睛 决定在起床之前在屋子...
    竹无心a阅读 453评论 35 54