From 400f756abbd1d7f679ff99aed8d873ab2ba9fc01 Mon Sep 17 00:00:00 2001 From: huazhongming Date: Sat, 22 Oct 2022 16:08:01 +0800 Subject: [PATCH] Avoid getting the whitelist every time and causing performance degradation (#10775) --- .../dubbo/Hessian2FactoryInitializer.java | 11 ++++++----- .../WhitelistHessian2FactoryInitializer.java | 15 ++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java index 814f27f747..842888cf1b 100644 --- a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java +++ b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java @@ -26,16 +26,17 @@ import com.alibaba.com.caucho.hessian.io.SerializerFactory; @SPI(value = "default", scope = ExtensionScope.FRAMEWORK) public interface Hessian2FactoryInitializer { - String WHITELIST = "dubbo.application.hessian2.whitelist"; - String ALLOW = "dubbo.application.hessian2.allow"; - String DENY = "dubbo.application.hessian2.deny"; + String ALLOW = System.getProperty("dubbo.application.hessian2.allow"); + String DENY = System.getProperty("dubbo.application.hessian2.deny"); + String WHITELIST = System.getProperty("dubbo.application.hessian2.whitelist"); + + String ALLOW_NON_SERIALIZABLE = System.getProperty("dubbo.hessian.allowNonSerializable", "false"); SerializerFactory getSerializerFactory(); static Hessian2FactoryInitializer getInstance() { ExtensionLoader loader = FrameworkModel.defaultModel().getExtensionLoader(Hessian2FactoryInitializer.class); - String whitelist = System.getProperty(WHITELIST); - if (StringUtils.isNotEmpty(whitelist)) { + if (StringUtils.isNotEmpty(WHITELIST)) { return loader.getExtension("whitelist"); } return loader.getDefaultExtension(); diff --git a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java index 6d7c88efbc..53bcb0f0cb 100644 --- a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java +++ b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java @@ -29,25 +29,22 @@ public class WhitelistHessian2FactoryInitializer extends AbstractHessian2Factory @Override public SerializerFactory createSerializerFactory() { SerializerFactory serializerFactory = new Hessian2SerializerFactory(); - String whiteList = System.getProperty(WHITELIST); - if ("true".equals(whiteList)) { + if ("true".equals(WHITELIST)) { serializerFactory.getClassFactory().setWhitelist(true); - String allowPattern = System.getProperty(ALLOW); - if (StringUtils.isNotEmpty(allowPattern)) { - for (String pattern : allowPattern.split(";")) { + if (StringUtils.isNotEmpty(ALLOW)) { + for (String pattern : ALLOW.split(";")) { serializerFactory.getClassFactory().allow(pattern); } } } else { serializerFactory.getClassFactory().setWhitelist(false); - String denyPattern = System.getProperty(DENY); - if (StringUtils.isNotEmpty(denyPattern)) { - for (String pattern : denyPattern.split(";")) { + if (StringUtils.isNotEmpty(DENY)) { + for (String pattern : DENY.split(";")) { serializerFactory.getClassFactory().deny(pattern); } } } - serializerFactory.setAllowNonSerializable(Boolean.parseBoolean(System.getProperty("dubbo.hessian.allowNonSerializable", "false"))); + serializerFactory.setAllowNonSerializable(Boolean.parseBoolean(ALLOW_NON_SERIALIZABLE)); serializerFactory.getClassFactory().allow("org.apache.dubbo.*"); return serializerFactory; }