This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 6691aa4a8d Fix fastjson2 init error cause startup failure (#14798)
6691aa4a8d is described below
commit 6691aa4a8d5e024b39cd3f18e89f16c0ee9487b2
Author: Albumen Kevin <[email protected]>
AuthorDate: Tue Oct 22 09:43:59 2024 +0800
Fix fastjson2 init error cause startup failure (#14798)
---
.../fastjson2/Fastjson2ScopeModelInitializer.java | 24 +++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git
a/dubbo-serialization/dubbo-serialization-fastjson2/src/main/java/org/apache/dubbo/common/serialize/fastjson2/Fastjson2ScopeModelInitializer.java
b/dubbo-serialization/dubbo-serialization-fastjson2/src/main/java/org/apache/dubbo/common/serialize/fastjson2/Fastjson2ScopeModelInitializer.java
index 029839fa75..6ca2da4b02 100644
---
a/dubbo-serialization/dubbo-serialization-fastjson2/src/main/java/org/apache/dubbo/common/serialize/fastjson2/Fastjson2ScopeModelInitializer.java
+++
b/dubbo-serialization/dubbo-serialization-fastjson2/src/main/java/org/apache/dubbo/common/serialize/fastjson2/Fastjson2ScopeModelInitializer.java
@@ -17,22 +17,40 @@
package org.apache.dubbo.common.serialize.fastjson2;
import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
+import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.model.ModuleModel;
import org.apache.dubbo.rpc.model.ScopeModelInitializer;
+import java.util.Arrays;
+
public class Fastjson2ScopeModelInitializer implements ScopeModelInitializer {
@Override
public void initializeFrameworkModel(FrameworkModel frameworkModel) {
- Class<?> aClass = null;
+ boolean classExist = false;
try {
- aClass = com.alibaba.fastjson2.JSONB.class;
+ for (String className : Arrays.asList(
+ "com.alibaba.fastjson2.JSONB",
+ "com.alibaba.fastjson2.reader.ObjectReaderCreatorASM",
+ "com.alibaba.fastjson2.writer.ObjectWriterCreatorASM",
+ "com.alibaba.fastjson2.JSONValidator",
+ "com.alibaba.fastjson2.JSONFactory",
+ "com.alibaba.fastjson2.JSONWriter",
+ "com.alibaba.fastjson2.util.TypeUtils",
+
"com.alibaba.fastjson2.filter.ContextAutoTypeBeforeHandler")) {
+ Class<?> aClass =
+ ClassUtils.forName(className,
Thread.currentThread().getContextClassLoader());
+ if (aClass == null) {
+ throw new ClassNotFoundException(className);
+ }
+ }
+ classExist = true;
} catch (Throwable ignored) {
}
- if (aClass != null) {
+ if (classExist) {
ScopeBeanFactory beanFactory = frameworkModel.getBeanFactory();
beanFactory.registerBean(Fastjson2CreatorManager.class);
beanFactory.registerBean(Fastjson2SecurityManager.class);