资讯专栏INFORMATION COLUMN

在springboot中扩展tomcat的executor

xiongzenghui / 1579人阅读

扩展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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35479.html

相关文章

  • 第二十七章:SpringBoot使用ApplicationEvent&Listener完成业

    摘要:实体代码如下所示恒宇少年码云用户名密码创建内添加一个注册方法,该方法只是实现注册事件发布功能,代码如下所示恒宇少年码云用户注册方法省略其他逻辑发布事件事件发布是由对象管控的,我们发布事件前需要注入对象调用方法完成事件发布。 ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之...

    Reducto 评论0 收藏0
  • 消息推送异常重发需要注意点(上篇)

    摘要:无证连接进行异常记录并关闭连接。离线消息检测到上线立即推送这是消息推送需要实现的基本功能之一了,详见代码。主要功能协助进行初始化,心跳包检测,断线自动重连消息推送的第二种方式在下篇中再编写 消息重发中需要注意的问题 由于最近工作中接触了比较多关闭消息推送以及异常重发机制的问题,终于得空总结一下经验 目前接触的消息推送分为两种 主动推送:一般为websocket建立长连接实现,此处网上...

    terro 评论0 收藏0
  • 2019年java架构师视频

    摘要:并发专题一内存模型原理实现机制单例模式并发基础并发集合原子操作基本类型线程池互联网工程专题二简介安装工具编程介绍,入门程序仓库依赖管理简介常用操作命令 01.并发专题(一)2018-09-11(1)-Java内存模型2018-09-13(2)-synchronized原理2018-09-16(3)-volatile实现机制2018-09-18(4)-DCL-单例模式2018-09-21...

    Object 评论0 收藏0
  • 一起来学SpringBoot | 第一篇:构建第一个SpringBoot工程

    摘要:由于本人更习惯使用所以后续案例都是基于与,同时这里是基于最新的编写的哦创建项目初次接触,我们先来看看如何创建一个项目,这里以为例,其他的工具小伙伴们自行搜索创建方式。创建完项目后,各位小伙伴请认真细心的对比下与传统的工程有何区别如目录结构。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身...

    jayce 评论0 收藏0
  • Springboot对多线程支持详解

    摘要:对多线程的支持详解这两天看阿里的开发手册,到多线程的时候说永远不要用这种方式来使用多线程。在使用线程池的大多数情况下都是异步非阻塞的。二配置类配置类代码如下下午解读利用来开启对于异步任务的支持配置类实现接口,返回一个线程池对象。 Springboot对多线程的支持详解 这两天看阿里的JAVA开发手册,到多线程的时候说永远不要用 new Thread()这种方式来使用多线程。确实是这样的...

    adie 评论0 收藏0

发表评论

0条评论

xiongzenghui

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<