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);

Reply via email to