Skip to content

Commit 6691aa4

Browse files
authored
Fix fastjson2 init error cause startup failure (#14798)
1 parent 71af8ac commit 6691aa4

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

dubbo-serialization/dubbo-serialization-fastjson2/src/main/java/org/apache/dubbo/common/serialize/fastjson2/Fastjson2ScopeModelInitializer.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,40 @@
1717
package org.apache.dubbo.common.serialize.fastjson2;
1818

1919
import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
20+
import org.apache.dubbo.common.utils.ClassUtils;
2021
import org.apache.dubbo.rpc.model.ApplicationModel;
2122
import org.apache.dubbo.rpc.model.FrameworkModel;
2223
import org.apache.dubbo.rpc.model.ModuleModel;
2324
import org.apache.dubbo.rpc.model.ScopeModelInitializer;
2425

26+
import java.util.Arrays;
27+
2528
public class Fastjson2ScopeModelInitializer implements ScopeModelInitializer {
2629

2730
@Override
2831
public void initializeFrameworkModel(FrameworkModel frameworkModel) {
29-
Class<?> aClass = null;
32+
boolean classExist = false;
3033
try {
31-
aClass = com.alibaba.fastjson2.JSONB.class;
34+
for (String className : Arrays.asList(
35+
"com.alibaba.fastjson2.JSONB",
36+
"com.alibaba.fastjson2.reader.ObjectReaderCreatorASM",
37+
"com.alibaba.fastjson2.writer.ObjectWriterCreatorASM",
38+
"com.alibaba.fastjson2.JSONValidator",
39+
"com.alibaba.fastjson2.JSONFactory",
40+
"com.alibaba.fastjson2.JSONWriter",
41+
"com.alibaba.fastjson2.util.TypeUtils",
42+
"com.alibaba.fastjson2.filter.ContextAutoTypeBeforeHandler")) {
43+
Class<?> aClass =
44+
ClassUtils.forName(className, Thread.currentThread().getContextClassLoader());
45+
if (aClass == null) {
46+
throw new ClassNotFoundException(className);
47+
}
48+
}
49+
classExist = true;
3250
} catch (Throwable ignored) {
3351
}
3452

35-
if (aClass != null) {
53+
if (classExist) {
3654
ScopeBeanFactory beanFactory = frameworkModel.getBeanFactory();
3755
beanFactory.registerBean(Fastjson2CreatorManager.class);
3856
beanFactory.registerBean(Fastjson2SecurityManager.class);

0 commit comments

Comments
 (0)