From 6ed3c1c68db8321634144a160cdba9380079ab84 Mon Sep 17 00:00:00 2001 From: shining-stars-lk <1031900093@qq.com> Date: Fri, 22 Jul 2022 15:54:08 +0800 Subject: [PATCH] Modifying Tomcat Adaptation --- .../WebThreadPoolHandlerConfiguration.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/hippo4j-spring-boot/hippo4j-spring-boot-starter-adapter/hippo4j-spring-boot-starter-adapter-web/src/main/java/cn/hippo4j/springboot/starter/adapter/web/WebThreadPoolHandlerConfiguration.java b/hippo4j-spring-boot/hippo4j-spring-boot-starter-adapter/hippo4j-spring-boot-starter-adapter-web/src/main/java/cn/hippo4j/springboot/starter/adapter/web/WebThreadPoolHandlerConfiguration.java index c5743e55..24ec8a0e 100644 --- a/hippo4j-spring-boot/hippo4j-spring-boot-starter-adapter/hippo4j-spring-boot-starter-adapter-web/src/main/java/cn/hippo4j/springboot/starter/adapter/web/WebThreadPoolHandlerConfiguration.java +++ b/hippo4j-spring-boot/hippo4j-spring-boot-starter-adapter/hippo4j-spring-boot-starter-adapter-web/src/main/java/cn/hippo4j/springboot/starter/adapter/web/WebThreadPoolHandlerConfiguration.java @@ -1,7 +1,37 @@ package cn.hippo4j.springboot.starter.adapter.web; +import cn.hippo4j.adapter.web.TomcatWebThreadPoolHandler; +import cn.hippo4j.adapter.web.WebThreadPoolRunStateHandler; +import org.apache.catalina.startup.Tomcat; +import org.apache.coyote.UpgradeProtocol; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.SearchStrategy; +import org.springframework.boot.web.servlet.server.ServletWebServerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.servlet.Servlet; + /** * Web Thread Pool Handler Configuration **/ +@Configuration(proxyBeanMethods = false) public class WebThreadPoolHandlerConfiguration { + + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass({Servlet.class, Tomcat.class, UpgradeProtocol.class}) + @ConditionalOnBean(value = ServletWebServerFactory.class, search = SearchStrategy.CURRENT) + static class EmbeddedTomcat { + + /** + * Refer to the Tomcat loading source code . + * This load is performed if the {@link Tomcat} class exists and + * the Web embedded server loads the {@link ServletWebServerFactory} top-level interface type at the same time + */ + @Bean + public TomcatWebThreadPoolHandler tomcatWebThreadPoolHandler(WebThreadPoolRunStateHandler webThreadPoolRunStateHandler) { + return new TomcatWebThreadPoolHandler(webThreadPoolRunStateHandler); + } + } }