From f1fd55f6f795c57c747d79e4da2d46db1acda653 Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Tue, 19 Oct 2021 11:54:20 +0800 Subject: [PATCH 1/3] Add switch for api pairing web server --- .../FizzApiPairingHttpHandler.java} | 10 +++++----- .../FizzApiPairingWebServer.java} | 16 +++++++++------- .../src/main/resources/META-INF/spring.factories | 3 ++- 3 files changed, 16 insertions(+), 13 deletions(-) rename fizz-core/src/main/java/we/api/{match/FizzApiMatchHttpHandler.java => pairing/FizzApiPairingHttpHandler.java} (94%) rename fizz-core/src/main/java/we/api/{match/FizzApiMatchWebServer.java => pairing/FizzApiPairingWebServer.java} (83%) diff --git a/fizz-core/src/main/java/we/api/match/FizzApiMatchHttpHandler.java b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingHttpHandler.java similarity index 94% rename from fizz-core/src/main/java/we/api/match/FizzApiMatchHttpHandler.java rename to fizz-core/src/main/java/we/api/pairing/FizzApiPairingHttpHandler.java index 160b4c6..9281373 100644 --- a/fizz-core/src/main/java/we/api/match/FizzApiMatchHttpHandler.java +++ b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingHttpHandler.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package we.api.match; +package we.api.pairing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,11 +48,11 @@ import java.util.Set; * @author hongqiaowei */ -public class FizzApiMatchHttpHandler implements HttpHandler { +public class FizzApiPairingHttpHandler implements HttpHandler { private static final String disconnected_client_log_category = "DisconnectedClient"; - private static final Logger log = LoggerFactory.getLogger(FizzApiMatchHttpHandler.class); + private static final Logger log = LoggerFactory.getLogger(FizzApiPairingHttpHandler.class); private static final Logger lostClientLog = LoggerFactory.getLogger(disconnected_client_log_category); @@ -64,8 +64,8 @@ public class FizzApiMatchHttpHandler implements HttpHandler { private ForwardedHeaderTransformer forwardedHeaderTransformer; private boolean enableLoggingRequestDetails = false; - public FizzApiMatchHttpHandler(WebSessionManager sessionManager, ServerCodecConfigurer codecConfigurer, - LocaleContextResolver localeContextResolver, ForwardedHeaderTransformer forwardedHeaderTransformer) { + public FizzApiPairingHttpHandler(WebSessionManager sessionManager, ServerCodecConfigurer codecConfigurer, + LocaleContextResolver localeContextResolver, ForwardedHeaderTransformer forwardedHeaderTransformer) { this.sessionManager = sessionManager; this.serverCodecConfigurer = codecConfigurer; this.localeContextResolver = localeContextResolver; diff --git a/fizz-core/src/main/java/we/api/match/FizzApiMatchWebServer.java b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java similarity index 83% rename from fizz-core/src/main/java/we/api/match/FizzApiMatchWebServer.java rename to fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java index e3bda8f..c488630 100644 --- a/fizz-core/src/main/java/we/api/match/FizzApiMatchWebServer.java +++ b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java @@ -15,11 +15,12 @@ * along with this program. If not, see . */ -package we.api.match; +package we.api.pairing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration; import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory; import org.springframework.boot.web.server.WebServer; @@ -36,11 +37,12 @@ import javax.annotation.Resource; * @author hongqiaowei */ -//@Configuration -//@AutoConfigureAfter({HttpHandlerAutoConfiguration.class}) -public class FizzApiMatchWebServer { +@ConditionalOnProperty(name = "fizz.api.pairing.enable", havingValue = "true") +@Configuration +@AutoConfigureAfter({HttpHandlerAutoConfiguration.class}) +public class FizzApiPairingWebServer { - private static final Logger log = LoggerFactory.getLogger(FizzApiMatchWebServer.class); + private static final Logger log = LoggerFactory.getLogger(FizzApiPairingWebServer.class); @Resource private HttpHandler httpHandler; @@ -54,7 +56,7 @@ public class FizzApiMatchWebServer { HttpWebHandlerAdapter adapter = (HttpWebHandlerAdapter) httpHandler; NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(port); server = factory.getWebServer( - new FizzApiMatchHttpHandler( + new FizzApiPairingHttpHandler( new DefaultWebSessionManager(), adapter.getCodecConfigurer(), adapter.getLocaleContextResolver(), @@ -62,7 +64,7 @@ public class FizzApiMatchWebServer { ) ); server.start(); - log.info("fizz api match web server listen on {}", port); + log.info("fizz api pairing web server listen on {}", port); } @PreDestroy diff --git a/fizz-spring-boot-starter/src/main/resources/META-INF/spring.factories b/fizz-spring-boot-starter/src/main/resources/META-INF/spring.factories index 9ee2176..ee8ee28 100644 --- a/fizz-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/fizz-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -45,4 +45,5 @@ we.proxy.FizzWebClient,\ we.proxy.NacosUriSelector,\ we.proxy.RpcInstanceServiceImpl,\ we.stats.ratelimit.ResourceRateLimitConfigService,\ -we.global_resource.GlobalResourceService +we.global_resource.GlobalResourceService,\ +we.api.pairing.FizzApiPairingWebServer From 956781fca9a6ad220d93cd3ede9ab3f08ba6ca6a Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Tue, 19 Oct 2021 13:29:20 +0800 Subject: [PATCH 2/3] Web server port config --- .../src/main/java/we/api/pairing/FizzApiPairingWebServer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java index c488630..9bba2a9 100644 --- a/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java +++ b/fizz-core/src/main/java/we/api/pairing/FizzApiPairingWebServer.java @@ -19,6 +19,7 @@ package we.api.pairing; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration; @@ -49,6 +50,7 @@ public class FizzApiPairingWebServer { private WebServer server; + @Value("${fizz.api.pairing.web-server.port:8601}") private int port = 8601; @PostConstruct From 71cf873fa26fd7613865ae84b561e1f7f62c47b1 Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Tue, 19 Oct 2021 14:39:41 +0800 Subject: [PATCH 3/3] Correct ThreadContext.getStringBuilder usage in WebUtils.toQueryString --- fizz-common/src/main/java/we/util/ThreadContext.java | 4 ++++ fizz-core/src/main/java/we/plugin/auth/ServiceConfig.java | 4 ++-- fizz-core/src/main/java/we/util/WebUtils.java | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/fizz-common/src/main/java/we/util/ThreadContext.java b/fizz-common/src/main/java/we/util/ThreadContext.java index def8156..79ddc7a 100644 --- a/fizz-common/src/main/java/we/util/ThreadContext.java +++ b/fizz-common/src/main/java/we/util/ThreadContext.java @@ -35,10 +35,14 @@ public abstract class ThreadContext { private static final String sb = "$sb"; + public static final String sb0 = "$sb0"; + private static final int sbCap = 256; private static final String arrayListT = "arlstT"; + public static final String arrayList0 = "arlst0T"; + private static final String hashMapT = "hsMapT"; private static final String hashSetT = "hsSetT"; diff --git a/fizz-core/src/main/java/we/plugin/auth/ServiceConfig.java b/fizz-core/src/main/java/we/plugin/auth/ServiceConfig.java index 3d3e227..e4eb4f5 100644 --- a/fizz-core/src/main/java/we/plugin/auth/ServiceConfig.java +++ b/fizz-core/src/main/java/we/plugin/auth/ServiceConfig.java @@ -36,7 +36,7 @@ public class ServiceConfig { // private static final String gmpT = "gmpT"; - private static final String gsmpT = "gsmpT"; +// private static final String gsmpT = "gsmpT"; private String id; @@ -108,7 +108,7 @@ public class ServiceConfig { @JsonIgnore public List getApiConfigs(Set gatewayGroups, HttpMethod method, String path) { - ArrayList result = ThreadContext.getArrayList(gsmpT); + ArrayList result = ThreadContext.getArrayList(ThreadContext.arrayList0); for (String gatewayGroup : gatewayGroups) { List apiConfigs = getApiConfigs(gatewayGroup, method, path); result.addAll(apiConfigs); diff --git a/fizz-core/src/main/java/we/util/WebUtils.java b/fizz-core/src/main/java/we/util/WebUtils.java index 4c101d8..e8e9450 100644 --- a/fizz-core/src/main/java/we/util/WebUtils.java +++ b/fizz-core/src/main/java/we/util/WebUtils.java @@ -623,7 +623,7 @@ public abstract class WebUtils { public static String jsonRespBody(int code, @Nullable String msg, @Nullable String traceId, @Nullable Object context) { // StringBuilder b = ThreadContext.getStringBuilder(respbT); - StringBuilder b = ThreadContext.getStringBuilder(); + StringBuilder b = ThreadContext.getStringBuilder(ThreadContext.sb0); b.append(s0).append(SystemConfig.FIZZ_ERR_RESP_CODE_FIELD).append(s1).append(code); if (StringUtils.isNotBlank(msg)) { b.append(s2).append(SystemConfig.FIZZ_ERR_RESP_MSG_FIELD).append(s3).append(msg).append(s4); @@ -639,7 +639,7 @@ public abstract class WebUtils { } public static String toQueryString(MultiValueMap queryParams) { - StringBuilder b = ThreadContext.getStringBuilder(); + StringBuilder b = ThreadContext.getStringBuilder(ThreadContext.sb0); Set>> params = queryParams.entrySet(); int ps = params.size(), cnt = 0; try {