You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/10/08 02:47:15 UTC

[dubbo] branch 3.0 updated: support native image(graalvm) for dubbo 3.0.4 (#8966)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new c22c589  support native image(graalvm) for dubbo 3.0.4 (#8966)
c22c589 is described below

commit c22c589a9a5f0a615f0d33cecf9d56392ed29101
Author: 张志勇 <go...@163.com>
AuthorDate: Fri Oct 8 10:46:56 2021 +0800

    support native image(graalvm) for dubbo 3.0.4 (#8966)
---
 .../dubbo/common/extension/ExtensionLoader.java    |    4 +-
 .../common/utils/ClassLoaderResourceLoader.java    |   20 +-
 .../org/apache/dubbo/common/utils/NativeUtils.java |   28 +
 .../dubbo-demo-native-consumer/pom.xml             |    2 +-
 .../dubbo/demo/graalvm/consumer/Application.java   |    1 +
 .../META-INF/native-image/reflect-config.json      | 3821 +++++++++++++------
 .../META-INF/native-image/resource-config.json     |  102 +-
 .../dubbo-demo-native-provider/pom.xml             |    3 +-
 .../dubbo/demo/graalvm/provider/Application.java   |   14 +-
 .../src/main/resources/Log4j.properties            |   25 +
 .../META-INF/native-image/reflect-config.json      | 3835 ++++++++++++++------
 .../META-INF/native-image/resource-config.json     |   95 +-
 .../common/serialize/Serialization$Adaptive.java   |    6 +-
 .../org/apache/dubbo/rpc/Protocol$Adaptive.java    |   12 +-
 .../apache/dubbo/rpc/ProxyFactory$Adaptive.java    |   18 +-
 .../apache/dubbo/rpc/cluster/Cluster$Adaptive.java |   17 +-
 dubbo-native/src/main/resources/Dockerfile         |   30 +
 17 files changed, 5602 insertions(+), 2431 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 830352f..946624d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -33,6 +33,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.ConcurrentHashSet;
 import org.apache.dubbo.common.utils.ConfigUtils;
 import org.apache.dubbo.common.utils.Holder;
+import org.apache.dubbo.common.utils.NativeUtils;
 import org.apache.dubbo.common.utils.ReflectUtils;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -71,7 +72,6 @@ import static java.util.ServiceLoader.load;
 import static java.util.stream.StreamSupport.stream;
 import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;
 import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.NATIVE;
 import static org.apache.dubbo.common.constants.CommonConstants.REMOVE_VALUE_PREFIX;
 
 /**
@@ -1165,7 +1165,7 @@ public class ExtensionLoader<T> {
     private Class<?> createAdaptiveExtensionClass() {
         ClassLoader classLoader = findClassLoader();
         try {
-            if (Boolean.parseBoolean(System.getProperty(NATIVE, "false"))) {
+            if (NativeUtils.isNative()) {
                 return classLoader.loadClass(type.getName() + "$Adaptive");
             }
         } catch (Throwable ignore) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoader.java
index 5dd8457..ee149c4 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassLoaderResourceLoader.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.common.utils;
 
 import java.io.IOException;
 import java.lang.ref.SoftReference;
+import java.lang.reflect.Field;
 import java.net.URL;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -26,6 +27,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -78,9 +80,15 @@ public class ClassLoaderResourceLoader {
             Enumeration<URL> urls = null;
             try {
                 urls = currentClassLoader.getResources(fileName);
+                boolean isNative = NativeUtils.isNative();
                 if (urls != null) {
                     while (urls.hasMoreElements()) {
-                        set.add(urls.nextElement());
+                        URL url = urls.nextElement();
+                        if (isNative) {
+                            //In native mode, the address of each URL is the same instead of different paths, so it is necessary to set the ref to make it different
+                            setRef(url);
+                        }
+                        set.add(url);
                     }
                 }
             } catch (IOException e) {
@@ -92,4 +100,14 @@ public class ClassLoaderResourceLoader {
     }
 
 
+    private static void setRef(URL url) {
+        try {
+            Field field = URL.class.getDeclaredField("ref");
+            field.setAccessible(true);
+            field.set(url, UUID.randomUUID().toString());
+        } catch (Throwable ignore) {
+        }
+    }
+
+
 }
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NativeUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NativeUtils.java
new file mode 100644
index 0000000..5ab9cff
--- /dev/null
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NativeUtils.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.common.utils;
+
+import static org.apache.dubbo.common.constants.CommonConstants.NATIVE;
+
+public abstract class NativeUtils {
+
+    public static boolean isNative() {
+        return Boolean.parseBoolean(System.getProperty(NATIVE, "false"));
+    }
+
+}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
index 6c4c625..6f92406 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
@@ -142,6 +142,7 @@
                                 --initialize-at-build-time=org.slf4j.impl.Log4jLoggerFactory
                                 --initialize-at-build-time=org.slf4j.impl.Log4jLoggerAdapter
                                 --initialize-at-build-time=org.eclipse.collections.api.factory.Sets
+                                --initialize-at-build-time=io.netty.util.internal.logging.Log4JLogger
 
 
                                 --initialize-at-run-time=io.netty.channel.epoll.Epoll
@@ -155,7 +156,6 @@
                                 --initialize-at-run-time=io.netty.channel.unix.Errors
                                 --initialize-at-run-time=io.netty.channel.unix.IovArray
                                 --initialize-at-run-time=io.netty.channel.unix.Limits
-                                --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger
                                 --initialize-at-run-time=io.netty.channel.unix.Socket
                                 --initialize-at-run-time=io.netty.channel.ChannelHandlerMask
 
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
index 929d916..5f81301 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/com/apache/dubbo/demo/graalvm/consumer/Application.java
@@ -29,6 +29,7 @@ public class Application {
 
     public static void main(String[] args) {
         System.setProperty("dubbo.application.logger", "log4j");
+        System.setProperty("native","true");
         if (isClassic(args)) {
             runWithRefer();
         } else {
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json
index e558b5d..f3dee4e 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json
@@ -1,1149 +1,2676 @@
 [
-{
-  "name":"byte[]"
-},
-{
-  "name":"com.intellij.rt.execution.application.AppMainV2$Agent",
-  "methods":[{"name":"premain","parameterTypes":["java.lang.String","java.lang.instrument.Instrumentation"] }]
-},
-{
-  "name":"io.netty.buffer.AbstractByteBufAllocator",
-  "allDeclaredMethods":true
-},
-{
-  "name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
-  "fields":[{"name":"refCnt", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.channel.ChannelDuplexHandler",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelHandlerAdapter",
-  "methods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
-},
-{
-  "name":"io.netty.channel.ChannelInboundHandlerAdapter",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelInitializer",
-  "methods":[
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelOutboundHandlerAdapter",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
-  ]
-},
-{
-  "name":"io.netty.channel.DefaultChannelPipeline$HeadContext",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"io.netty.channel.DefaultChannelPipeline$TailContext",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.channel.socket.nio.NioSocketChannel",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"io.netty.handler.codec.ByteToMessageDecoder",
-  "methods":[
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.handler.codec.MessageToByteEncoder",
-  "methods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
-},
-{
-  "name":"io.netty.handler.timeout.IdleStateHandler",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"io.netty.util.ReferenceCountUtil",
-  "allDeclaredMethods":true
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
-  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
-  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
-  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
-  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
-  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
-  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
-},
-{
-  "name":"java.io.File",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"java.lang.Number",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.Object",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allPublicMethods":true
-},
-{
-  "name":"java.lang.StackTraceElement",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.lang.String"
-},
-{
-  "name":"java.lang.String[]"
-},
-{
-  "name":"java.lang.Thread",
-  "methods":[{"name":"getContextClassLoader","parameterTypes":[] }]
-},
-{
-  "name":"java.lang.Throwable",
-  "fields":[
-    {"name":"detailMessage"}, 
-    {"name":"stackTrace"}
-  ]
-},
-{
-  "name":"java.lang.management.ManagementFactory",
-  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
-},
-{
-  "name":"java.lang.management.RuntimeMXBean",
-  "methods":[{"name":"getName","parameterTypes":[] }]
-},
-{
-  "name":"java.math.BigDecimal",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"java.math.BigInteger",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.nio.Bits",
-  "methods":[{"name":"unaligned","parameterTypes":[] }]
-},
-{
-  "name":"java.nio.Buffer",
-  "fields":[{"name":"address", "allowUnsafeAccess":true}]
-},
-{
-  "name":"java.nio.DirectByteBuffer",
-  "fields":[{"name":"cleaner", "allowUnsafeAccess":true}],
-  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
-},
-{
-  "name":"java.security.MessageDigestSpi"
-},
-{
-  "name":"java.security.interfaces.RSAPrivateKey"
-},
-{
-  "name":"java.security.interfaces.RSAPublicKey"
-},
-{
-  "name":"java.sql.Date",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.sql.Time",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.sql.Timestamp",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.time.Duration"
-},
-{
-  "name":"java.time.Instant"
-},
-{
-  "name":"java.time.LocalDate"
-},
-{
-  "name":"java.time.LocalDateTime"
-},
-{
-  "name":"java.time.LocalTime"
-},
-{
-  "name":"java.time.MonthDay"
-},
-{
-  "name":"java.time.OffsetDateTime"
-},
-{
-  "name":"java.time.OffsetTime"
-},
-{
-  "name":"java.time.Period"
-},
-{
-  "name":"java.time.Year"
-},
-{
-  "name":"java.time.YearMonth"
-},
-{
-  "name":"java.time.ZoneId"
-},
-{
-  "name":"java.time.ZoneOffset"
-},
-{
-  "name":"java.time.ZonedDateTime"
-},
-{
-  "name":"java.util.AbstractMap",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.Date"
-},
-{
-  "name":"java.util.HashMap",
-  "allDeclaredMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"java.util.LinkedHashMap",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.Map",
-  "allPublicConstructors":true
-},
-{
-  "name":"java.util.concurrent.ConcurrentNavigableMap"
-},
-{
-  "name":"java.util.concurrent.ConcurrentSkipListMap"
-},
-{
-  "name":"javax.management.ObjectName",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"javax.security.auth.x500.X500Principal",
-  "fields":[{"name":"thisX500Name"}],
-  "methods":[{"name":"<init>","parameterTypes":["sun.security.x509.X500Name"] }]
-},
-{
-  "name":"org.apace.dubbo.graalvm.demo.DemoService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.common.config.Environment",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.extension.inject.SpiExtensionInjector",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.infra.support.EnvironmentAdapter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.jcl.JclLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.Hessian2Serialization",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.dubbo.WhitelistHessian2FactoryInitializer",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.ThreadPool$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.cached.CachedThreadPool",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.eager.EagerThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.fixed.FixedThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.limited.LimitedThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.url.component.param.DefaultDynamicParamSource",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.AbstractConfig",
-  "allDeclaredFields":true,
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractInterfaceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractMethodConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractReferenceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractServiceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ApplicationConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ConfigCenterConfig",
-  "allDeclaredFields":true,
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ConsumerConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ModuleConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ProtocolConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ProviderConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ReferenceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ReferenceConfigBase",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.RegistryConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.SslConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.context.ConfigManager",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.EnumTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.MapTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.MethodDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.ServiceDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.TypeDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.MetricsService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.monitor.MonitorService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MetricsServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MonitorClusterFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MonitorFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MonitorServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.RegistryFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.RegistryFactoryWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.registry.RegistryFactory"] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.DefaultRegistryClusterIdentifier",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.DefaultServiceDiscoveryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.MetadataServiceNameMapping",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.migration.DefaultMigrationAddressComparator",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.migration.MigrationRuleListener",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.integration.RegistryProtocol",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.multicast.MulticastRegistryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.multicast.MulticastServiceDiscoveryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscoveryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.Dispatcher$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.Transporter$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.exchange.codec.ExchangeCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.telnet.codec.TelnetCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.codec.TransportCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyClient$1"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyClientHandler",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalDecoder"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyTransporter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.Protocol$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.ProxyFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.Cluster$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.ConfiguratorFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.RouterFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.configurator.absent.AbsentConfiguratorFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.configurator.override.OverrideConfiguratorFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.DefaultFilterChainBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.Protocol"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.support.ZoneAwareFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.condition.ConditionRouterFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.condition.config.AppRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.condition.config.ServiceRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.file.FileRouterFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleAddressListenerInterceptor",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.mock.MockRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.tag.TagDynamicStateRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.router.tag.TagStaticStateRouterFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.AvailableCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.BroadcastCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.FailbackCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.FailfastCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.FailoverCluster",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.FailsafeCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.ForkingCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.MergeableCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.cluster.Cluster"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.AccessLogFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ClassLoaderFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.CompatibleFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ContextFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.DeprecatedFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.EchoFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ExceptionFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ExecuteLimitFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.GenericFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.GenericImplFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TimeoutFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TokenFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TpsLimitFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.listener.DeprecatedInvokerListener",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.model.ServiceRepository",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.Protocol"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.ProxyFactory"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.service.Destroyable",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.rpc.service.EchoService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.rpc.service.EchoServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.service.GenericService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.rpc.service.GenericServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.support.MockProtocol",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.log4j.Appender"
-},
-{
-  "name":"org.apache.log4j.Category"
-},
-{
-  "name":"org.apache.log4j.CategoryKey"
-},
-{
-  "name":"org.apache.log4j.ConsoleAppender",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.log4j.Layout",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.log4j.Logger"
-},
-{
-  "name":"org.apache.log4j.PatternLayout",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.log4j.helpers.Loader"
-},
-{
-  "name":"org.apache.log4j.spi.OptionHandler"
-},
-{
-  "name":"org.apache.zookeeper.ClientCnxnSocketNIO",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.misc.Cleaner",
-  "methods":[{"name":"clean","parameterTypes":[] }]
-},
-{
-  "name":"sun.misc.Unsafe",
-  "fields":[{"name":"theUnsafe"}],
-  "methods":[
-    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
-    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
-    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }
-  ]
-},
-{
-  "name":"sun.misc.VM",
-  "methods":[{"name":"maxDirectMemory","parameterTypes":[] }]
-},
-{
-  "name":"sun.nio.ch.SelectorImpl",
-  "fields":[
-    {"name":"publicSelectedKeys"}, 
-    {"name":"selectedKeys"}
-  ]
-},
-{
-  "name":"sun.security.pkcs.SignerInfo[]"
-},
-{
-  "name":"sun.security.provider.ConfigFile",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.SHA",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.SHA2$SHA256",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.Sun",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.X509Factory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.RSAKeyFactory$Legacy",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.RSASignature$SHA256withRSA",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.SunRsaSign",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.util.ObjectIdentifier"
-},
-{
-  "name":"sun.security.x509.AuthorityInfoAccessExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.AuthorityKeyIdentifierExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.BasicConstraintsExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.CRLDistributionPointsExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.CertificateExtensions"
-},
-{
-  "name":"sun.security.x509.CertificatePoliciesExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.ExtendedKeyUsageExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.KeyUsageExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.SubjectAlternativeNameExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.SubjectKeyIdentifierExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-}
+  {
+    "name": "boolean",
+    "allPublicMethods": true
+  },
+  {
+    "name": "com.intellij.rt.execution.application.AppMainV2$Agent",
+    "methods": [
+      {
+        "name": "premain",
+        "parameterTypes": [
+          "java.lang.String",
+          "java.lang.instrument.Instrumentation"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.bootstrap.ServerBootstrap$1"
+  },
+  {
+    "name": "io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor",
+    "methods": [
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.buffer.AbstractByteBufAllocator",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "io.netty.buffer.AbstractReferenceCountedByteBuf",
+    "fields": [
+      {
+        "name": "refCnt",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelDuplexHandler",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelHandlerAdapter",
+    "methods": [
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelInboundHandlerAdapter",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelInitializer",
+    "methods": [
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelOutboundHandlerAdapter",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.DefaultChannelPipeline$HeadContext",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.DefaultChannelPipeline$TailContext",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.socket.nio.NioServerSocketChannel",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.socket.nio.NioSocketChannel",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.codec.ByteToMessageDecoder",
+    "methods": [
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.codec.MessageToByteEncoder",
+    "methods": [
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.timeout.IdleStateHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.ReferenceCountUtil",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+    "fields": [
+      {
+        "name": "producerLimit",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+    "fields": [
+      {
+        "name": "consumerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+    "fields": [
+      {
+        "name": "producerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
+    "fields": [
+      {
+        "name": "consumerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
+    "fields": [
+      {
+        "name": "producerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
+    "fields": [
+      {
+        "name": "producerLimit",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "java.io.File",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.io.Serializable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Cloneable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Comparable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Enum",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Integer",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.lang.Number",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Object",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true
+  },
+  {
+    "name": "java.lang.StackTraceElement",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.lang.String"
+  },
+  {
+    "name": "java.lang.String[]"
+  },
+  {
+    "name": "java.lang.Thread",
+    "methods": [
+      {
+        "name": "getContextClassLoader",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.lang.Throwable",
+    "fields": [
+      {
+        "name": "detailMessage"
+      },
+      {
+        "name": "stackTrace"
+      }
+    ]
+  },
+  {
+    "name": "java.lang.management.ManagementFactory",
+    "methods": [
+      {
+        "name": "getRuntimeMXBean",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.lang.management.RuntimeMXBean",
+    "methods": [
+      {
+        "name": "getName",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.math.BigDecimal",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.math.BigInteger",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.net.URL",
+    "fields": [
+      {
+        "name": "ref"
+      }
+    ]
+  },
+  {
+    "name": "java.nio.Bits",
+    "methods": [
+      {
+        "name": "unaligned",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.nio.Buffer",
+    "fields": [
+      {
+        "name": "address",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "java.nio.DirectByteBuffer",
+    "fields": [
+      {
+        "name": "cleaner",
+        "allowUnsafeAccess": true
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long",
+          "int"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.security.MessageDigestSpi"
+  },
+  {
+    "name": "java.sql.Date",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.sql.Time",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.sql.Timestamp",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.time.Duration"
+  },
+  {
+    "name": "java.time.Instant"
+  },
+  {
+    "name": "java.time.LocalDate"
+  },
+  {
+    "name": "java.time.LocalDateTime"
+  },
+  {
+    "name": "java.time.LocalTime"
+  },
+  {
+    "name": "java.time.MonthDay"
+  },
+  {
+    "name": "java.time.OffsetDateTime"
+  },
+  {
+    "name": "java.time.OffsetTime"
+  },
+  {
+    "name": "java.time.Period"
+  },
+  {
+    "name": "java.time.Year"
+  },
+  {
+    "name": "java.time.YearMonth"
+  },
+  {
+    "name": "java.time.ZoneId"
+  },
+  {
+    "name": "java.time.ZoneOffset"
+  },
+  {
+    "name": "java.time.ZonedDateTime"
+  },
+  {
+    "name": "java.util.AbstractMap",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.ArrayList",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.BitSet",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "java.util.HashMap",
+    "allDeclaredMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.LinkedHashMap",
+    "allPublicConstructors": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.Map",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.NavigableMap",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.SortedMap",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.TreeMap",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.util.Map",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "java.util.concurrent.ConcurrentNavigableMap"
+  },
+  {
+    "name": "java.util.concurrent.ConcurrentSkipListMap"
+  },
+  {
+    "name": "javax.management.ObjectName",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apace.dubbo.graalvm.demo.DemoService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.curator.x.discovery.ServiceType",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.curator.x.discovery.details.OldServiceInstance",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.CommonScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.URL",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.beans.ScopeBeanExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.AdaptiveCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.JavassistCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.JdkCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.config.Environment",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.config.ModuleEnvironment",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory"
+  },
+  {
+    "name": "org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory"
+  },
+  {
+    "name": "org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.extension.inject.SpiExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.infra.support.EnvironmentAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.lang.ShutdownHookCallbacks",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.jcl.JclLoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.Hessian2Serialization",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.dubbo.WhitelistHessian2FactoryInitializer"
+  },
+  {
+    "name": "org.apache.dubbo.common.status.reporter.FrameworkStatusReportService",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.ThreadPool",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.ThreadPool$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.cached.CachedThreadPool",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.eager.EagerThreadPool"
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.fixed.FixedThreadPool",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.limited.LimitedThreadPool"
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.URLAddress",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.URLParam",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.param.DefaultDynamicParamSource",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractInterfaceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractMethodConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractReferenceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractServiceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ApplicationConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "monitor"
+      },
+      {
+        "name": "registries"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ArgumentConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ConfigCenterConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "appExternalConfiguration"
+      },
+      {
+        "name": "externalConfiguration"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ConfigScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ConsumerConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.MethodConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "arguments"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ModuleConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "monitor"
+      },
+      {
+        "name": "registries"
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ProtocolConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ProviderConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ReferenceConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "invoker"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ReferenceConfigBase",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.RegistryConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ServiceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ServiceConfigBase",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.SslConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "clientKeyCertChainPathStream"
+      },
+      {
+        "name": "clientPrivateKeyPathStream"
+      },
+      {
+        "name": "clientTrustCertCollectionPathStream"
+      },
+      {
+        "name": "serverKeyCertChainPathStream"
+      },
+      {
+        "name": "serverPrivateKeyPathStream"
+      },
+      {
+        "name": "serverTrustCertCollectionPathStream"
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.context.ConfigManager",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.deploy.DefaultApplicationDeployer",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.deploy.DefaultModuleDeployer",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.metadata.ServiceInstanceHostPortCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.utils.DefaultConfigValidator",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.demo.graalvm.provider.DemoServiceImpl",
+    "methods": [
+      {
+        "name": "sayHello",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.InstanceMetadataChangedListener",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataInfo",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataInfo$ServiceInfo",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.EnumTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.MapTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.MethodDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.ServiceDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.TypeDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.report.MetadataReportInstance",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.report.MetadataScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.MetricsService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.monitor.MonitorService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MetricsServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorClusterFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorFilter"
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactoryWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.registry.RegistryFactory"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultRegistryClusterIdentifier",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultServiceDiscoveryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultServiceInstance$Endpoint",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.MetadataServiceNameMapping",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.MetadataServiceURLParamsMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.migration.DefaultMigrationAddressComparator",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.migration.MigrationRuleListener",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.integration.RegistryProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.multicast.MulticastRegistryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.multicast.MulticastServiceDiscoveryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.support.DefaultProviderFirstParams",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.support.RegistryManager",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperInstance",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscoveryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Dispatcher",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Dispatcher$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Transporter",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Transporter$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.exchange.codec.ExchangeCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.telnet.codec.TelnetCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.codec.TransportCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyClient$1"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyClientHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalDecoder"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyServer$1"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyServerHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyTransporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.zookeeper.curator5.Curator5ZookeeperTransporter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Invoker",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Protocol",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Protocol$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.ProxyFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.ProxyFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Cluster",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Cluster$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ClusterScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ConfiguratorFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ConfiguratorFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Directory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.RouterFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.RouterFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.configurator.absent.AbsentConfiguratorFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.configurator.override.OverrideConfiguratorFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.DefaultFilterChainBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.support.ZoneAwareFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.merger.MergerFactory",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ClusterUtils",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.AccessLogFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ClassLoaderFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.CompatibleFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ContextFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.DeprecatedFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.EchoFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExceptionFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExecuteLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TimeoutFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.ConditionRouterFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.config.AppRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.config.ServiceRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.file.FileRouterFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleAddressListenerInterceptor",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mock.MockRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagDynamicStateRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagStaticStateRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.AvailableCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.BroadcastCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ClusterUtils",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailbackCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailfastCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailoverCluster",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailsafeCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ForkingCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.MergeableCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.merger.DefaultProviderURLMergeProcessor",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.cluster.Cluster"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.AccessLogFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ClassLoaderFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.CompatibleFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ContextFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.DeprecatedFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.EchoFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExceptionFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExecuteLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TimeoutFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TokenFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TpsLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.listener.DeprecatedInvokerListener"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.ProxyFactory"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.Destroyable",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.EchoService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.EchoServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.GenericService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.GenericServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.support.MockProtocol"
+  },
+  {
+    "name": "org.apache.log4j.Appender"
+  },
+  {
+    "name": "org.apache.log4j.Category"
+  },
+  {
+    "name": "org.apache.log4j.CategoryKey"
+  },
+  {
+    "name": "org.apache.log4j.ConsoleAppender",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.log4j.Layout",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.log4j.Logger"
+  },
+  {
+    "name": "org.apache.log4j.PatternLayout",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.log4j.helpers.Loader"
+  },
+  {
+    "name": "org.apache.log4j.spi.OptionHandler"
+  },
+  {
+    "name": "org.apache.zookeeper.ClientCnxnSocketNIO",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.Cleaner",
+    "methods": [
+      {
+        "name": "clean",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.Unsafe",
+    "fields": [
+      {
+        "name": "theUnsafe"
+      }
+    ],
+    "methods": [
+      {
+        "name": "copyMemory",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "java.lang.Object",
+          "long",
+          "long"
+        ]
+      },
+      {
+        "name": "getAndAddLong",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "long"
+        ]
+      },
+      {
+        "name": "getAndSetObject",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.VM",
+    "methods": [
+      {
+        "name": "maxDirectMemory",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.nio.ch.SelectorImpl",
+    "fields": [
+      {
+        "name": "publicSelectedKeys"
+      },
+      {
+        "name": "selectedKeys"
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.ConfigFile",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.MD5",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.NativePRNG",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.SHA",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.Sun",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  }
 ]
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/resource-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/resource-config.json
index c42419a..f2febd2 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/resource-config.json
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/resource-config.json
@@ -1,52 +1,58 @@
 {
-  "_comment": "Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable la [...]
   "resources":{
-  "includes":[
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.infra.InfraAdapter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.logger.LoggerAdapter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.ThreadPool\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.url.component.param.DynamicParamSource\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.AddressListener\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.migration.MigrationAddressComparator\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Dispatcher\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Transporter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.InvokerListener\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ConfiguratorFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\\E"}, 
-    {"pattern":"\\QMETA-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\\E"}, 
-    {"pattern":"\\Qlog4j.properties\\E"},
-    {"pattern":"\\Qdubbo.properties\\E"},
-    {"pattern":"\\Qorg/apache/dubbo/common/Version.class\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/remoting/RemotingException.class\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/remoting/Transporters.class\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/remoting/exchange/Exchangers.class\\E"}, 
-    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}
-  ]},
+    "includes":[
+      {"pattern":"\\QDENY_CLASS\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.ApplicationExt\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.ModuleExt\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.infra.InfraAdapter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.logger.LoggerAdapter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.ThreadPool\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.url.component.param.DynamicParamSource\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.AddressListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.ProviderFirstParams\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.migration.MigrationAddressComparator\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Dispatcher\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Transporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.InvokerListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ConfiguratorFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer\\E"},
+      {"pattern":"\\QMETA-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\\E"},
+      {"pattern":"\\Qdubbo.properties\\E"},
+      {"pattern":"\\Qlog4j.properties\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/common/Version.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/RemotingException.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/Transporters.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/exchange/Exchangers.class\\E"}
+    ]},
   "bundles":[]
 }
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
index f5699b2..f0c9df7 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
@@ -128,6 +128,7 @@
                                 --no-fallback
 
                                 --initialize-at-build-time=org.slf4j.MDC
+                                --initialize-at-build-time=org.apache.log4j.MDC
                                 --initialize-at-build-time=org.slf4j.LoggerFactory
                                 --initialize-at-build-time=org.slf4j.impl.StaticLoggerBinder
                                 --initialize-at-build-time=org.apache.log4j.helpers.Loader
@@ -138,6 +139,7 @@
                                 --initialize-at-build-time=org.slf4j.impl.Log4jLoggerFactory
                                 --initialize-at-build-time=org.slf4j.impl.Log4jLoggerAdapter
                                 --initialize-at-build-time=org.eclipse.collections.api.factory.Sets
+                                --initialize-at-build-time=io.netty.util.internal.logging.Log4JLogger
 
 
 
@@ -152,7 +154,6 @@
                                 --initialize-at-run-time=io.netty.channel.unix.Errors
                                 --initialize-at-run-time=io.netty.channel.unix.IovArray
                                 --initialize-at-run-time=io.netty.channel.unix.Limits
-                                --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger
                                 --initialize-at-run-time=io.netty.channel.unix.Socket
                                 --initialize-at-run-time=io.netty.channel.ChannelHandlerMask
 
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java
index 763bee4..b1b4615 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java
@@ -30,7 +30,8 @@ import java.util.concurrent.CountDownLatch;
 public class Application {
 
     public static void main(String[] args) throws Exception {
-        System.setProperty("dubbo.application.logger", "jdk");
+        System.setProperty("dubbo.application.logger", "log4j");
+        System.setProperty("native", "true");
         if (isClassic(args)) {
             startWithExport();
         } else {
@@ -68,7 +69,16 @@ public class Application {
         ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
         service.setInterface(DemoService.class);
         service.setRef(new DemoServiceImpl());
-        service.setApplication(new ApplicationConfig("dubbo-demo-api-provider"));
+
+        ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-demo-api-provider");
+        applicationConfig.setQosEnable(false);
+        applicationConfig.setCompiler("jdk");
+
+        Map<String, String> m = new HashMap<>(1);
+        m.put("proxy", "jdk");
+        applicationConfig.setParameters(m);
+
+        service.setApplication(applicationConfig);
         service.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
         service.export();
 
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/Log4j.properties b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/Log4j.properties
new file mode 100644
index 0000000..4e90fa2
--- /dev/null
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/Log4j.properties
@@ -0,0 +1,25 @@
+#
+#
+#   Licensed to the Apache Software Foundation (ASF) under one or more
+#   contributor license agreements.  See the NOTICE file distributed with
+#   this work for additional information regarding copyright ownership.
+#   The ASF licenses this file to You under the Apache License, Version 2.0
+#   (the "License"); you may not use this file except in compliance with
+#   the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+#
+
+
+log4j.rootLogger=error, console
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=[%-12d{HH\:mm\:ss.SS}] [%p] %l %m%n
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json
index 8ec44e3..f3dee4e 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json
@@ -1,1163 +1,2676 @@
 [
-{
-  "name":"byte[]"
-},
-{
-  "name":"com.alibaba.fastjson.serializer.ASMSerializer_1_Endpoint",
-  "methods":[{"name":"<init>","parameterTypes":["com.alibaba.fastjson.serializer.SerializeBeanInfo"] }]
-},
-{
-  "name":"com.intellij.rt.execution.application.AppMainV2$Agent",
-  "methods":[{"name":"premain","parameterTypes":["java.lang.String","java.lang.instrument.Instrumentation"] }]
-},
-{
-  "name":"io.netty.bootstrap.ServerBootstrap$1"
-},
-{
-  "name":"io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor",
-  "methods":[
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
-  ]
-},
-{
-  "name":"io.netty.buffer.AbstractByteBufAllocator",
-  "allDeclaredMethods":true
-},
-{
-  "name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
-  "fields":[{"name":"refCnt", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.channel.ChannelDuplexHandler",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelHandlerAdapter",
-  "methods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
-},
-{
-  "name":"io.netty.channel.ChannelInboundHandlerAdapter",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelInitializer",
-  "methods":[
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
-  ]
-},
-{
-  "name":"io.netty.channel.ChannelOutboundHandlerAdapter",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
-  ]
-},
-{
-  "name":"io.netty.channel.DefaultChannelPipeline$HeadContext",
-  "methods":[
-    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
-    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"io.netty.channel.DefaultChannelPipeline$TailContext",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.channel.socket.nio.NioServerSocketChannel",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"io.netty.handler.codec.ByteToMessageDecoder",
-  "methods":[
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
-  ]
-},
-{
-  "name":"io.netty.handler.codec.MessageToByteEncoder",
-  "methods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
-},
-{
-  "name":"io.netty.handler.timeout.IdleStateHandler",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"io.netty.util.ReferenceCountUtil",
-  "allDeclaredMethods":true
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
-  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
-  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
-  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
-  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
-  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
-},
-{
-  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
-  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
-},
-{
-  "name":"java.beans.Transient"
-},
-{
-  "name":"java.io.File",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"java.io.Serializable",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.AutoCloseable"
-},
-{
-  "name":"java.lang.Cloneable",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.Comparable",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.Enum",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.Integer",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.lang.Number",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.lang.Object",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allPublicMethods":true
-},
-{
-  "name":"java.lang.Object[]"
-},
-{
-  "name":"java.lang.StackTraceElement",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.lang.String"
-},
-{
-  "name":"java.lang.String[]"
-},
-{
-  "name":"java.lang.Thread",
-  "methods":[{"name":"getContextClassLoader","parameterTypes":[] }]
-},
-{
-  "name":"java.lang.Throwable",
-  "fields":[{"name":"detailMessage"}]
-},
-{
-  "name":"java.lang.annotation.Repeatable",
-  "methods":[{"name":"value","parameterTypes":[] }]
-},
-{
-  "name":"java.lang.management.ManagementFactory",
-  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
-},
-{
-  "name":"java.lang.management.RuntimeMXBean",
-  "methods":[{"name":"getName","parameterTypes":[] }]
-},
-{
-  "name":"java.math.BigDecimal",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"java.math.BigInteger",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.nio.Bits",
-  "methods":[{"name":"unaligned","parameterTypes":[] }]
-},
-{
-  "name":"java.nio.Buffer",
-  "fields":[{"name":"address", "allowUnsafeAccess":true}]
-},
-{
-  "name":"java.nio.DirectByteBuffer",
-  "fields":[{"name":"cleaner", "allowUnsafeAccess":true}],
-  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
-},
-{
-  "name":"java.nio.file.Path"
-},
-{
-  "name":"java.security.MessageDigestSpi"
-},
-{
-  "name":"java.security.interfaces.RSAPrivateKey"
-},
-{
-  "name":"java.security.interfaces.RSAPublicKey"
-},
-{
-  "name":"java.sql.Clob"
-},
-{
-  "name":"java.sql.Date",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.sql.Time",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.sql.Timestamp",
-  "methods":[{"name":"<init>","parameterTypes":["long"] }]
-},
-{
-  "name":"java.time.Duration"
-},
-{
-  "name":"java.time.Instant"
-},
-{
-  "name":"java.time.LocalDate"
-},
-{
-  "name":"java.time.LocalDateTime"
-},
-{
-  "name":"java.time.LocalTime"
-},
-{
-  "name":"java.time.MonthDay"
-},
-{
-  "name":"java.time.OffsetDateTime"
-},
-{
-  "name":"java.time.OffsetTime"
-},
-{
-  "name":"java.time.Period"
-},
-{
-  "name":"java.time.Year"
-},
-{
-  "name":"java.time.YearMonth"
-},
-{
-  "name":"java.time.ZoneId"
-},
-{
-  "name":"java.time.ZoneOffset"
-},
-{
-  "name":"java.time.ZonedDateTime"
-},
-{
-  "name":"java.util.AbstractMap",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.BitSet",
-  "allDeclaredFields":true
-},
-{
-  "name":"java.util.Date"
-},
-{
-  "name":"java.util.HashMap",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.LinkedHashMap",
-  "allPublicConstructors":true
-},
-{
-  "name":"java.util.Map",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.NavigableMap",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.SortedMap",
-  "allDeclaredMethods":true
-},
-{
-  "name":"java.util.TreeMap",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"java.util.concurrent.ConcurrentNavigableMap"
-},
-{
-  "name":"java.util.concurrent.ConcurrentSkipListMap"
-},
-{
-  "name":"javax.management.ObjectName",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"javax.security.auth.x500.X500Principal",
-  "fields":[{"name":"thisX500Name"}],
-  "methods":[{"name":"<init>","parameterTypes":["sun.security.x509.X500Name"] }]
-},
-{
-  "name":"org.apace.dubbo.graalvm.demo.DemoService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.curator.x.discovery.ServiceType",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"org.apache.curator.x.discovery.details.OldServiceInstance",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"org.apache.dubbo.common.URL",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.common.compiler.support.AdaptiveCompiler",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.compiler.support.JavassistCompiler",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.compiler.support.JdkCompiler",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.config.Environment",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.extension.inject.SpiExtensionInjector",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.infra.support.EnvironmentAdapter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.jcl.JclLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.Hessian2Serialization",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.serialize.hessian2.dubbo.WhitelistHessian2FactoryInitializer",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.ThreadPool",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.ThreadPool$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.cached.CachedThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.eager.EagerThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.fixed.FixedThreadPool",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.threadpool.support.limited.LimitedThreadPool",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.common.url.component.URLAddress",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.common.url.component.URLParam",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.common.url.component.param.DefaultDynamicParamSource",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.AbstractConfig",
-  "allDeclaredFields":true,
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractInterfaceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractMethodConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractReferenceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.AbstractServiceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ApplicationConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ArgumentConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ConfigCenterConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ConsumerConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.MethodConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ModuleConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ProtocolConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.ProviderConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.RegistryConfig",
-  "allDeclaredFields":true,
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ServiceConfig",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.ServiceConfigBase",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.config.SslConfig",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.context.ConfigManager",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.config.metadata.ServiceInstanceHostPortCustomizer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.demo.graalvm.provider.DemoServiceImpl",
-  "methods":[{"name":"sayHello","parameterTypes":["java.lang.String"] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.InstanceMetadataChangedListener",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.metadata.MetadataInfo",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.metadata.MetadataInfo$ServiceInfo",
-  "allDeclaredFields":true
-},
-{
-  "name":"org.apache.dubbo.metadata.MetadataService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.EnumTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.builder.MapTypeBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.MethodDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.ServiceDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.metadata.definition.model.TypeDefinition",
-  "allDeclaredFields":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.MetricsService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.monitor.MonitorService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MetricsServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MonitorFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.monitor.support.MonitorServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.RegistryFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.RegistryFactoryWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.registry.RegistryFactory"] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.DefaultRegistryClusterIdentifier",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.DefaultServiceDiscoveryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.DefaultServiceInstance$Endpoint",
-  "allDeclaredFields":true,
-  "allPublicFields":true,
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.MetadataServiceNameMapping",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.MetadataServiceURLParamsMetadataCustomizer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.client.migration.MigrationRuleListener",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.integration.RegistryProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.multicast.MulticastRegistryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.multicast.MulticastServiceDiscoveryFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.zookeeper.ZookeeperInstance",
-  "allDeclaredFields":true,
-  "allDeclaredMethods":true,
-  "allDeclaredConstructors":true
-},
-{
-  "name":"org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscoveryFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.Dispatcher$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.Transporter$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.exchange.codec.ExchangeCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.telnet.codec.TelnetCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.codec.TransportCodec",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalDecoder"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyServer$1"
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyServerHandler",
-  "methods":[
-    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
-    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
-    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
-    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
-  ]
-},
-{
-  "name":"org.apache.dubbo.remoting.transport.netty4.NettyTransporter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.Protocol$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.ProxyFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.ConfiguratorFactory$Adaptive",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.configurator.absent.AbsentConfiguratorFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.configurator.override.OverrideConfiguratorFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.DefaultFilterChainBuilder",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.Protocol"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.AccessLogFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ClassLoaderFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.CompatibleFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ContextFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.DeprecatedFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.EchoFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ExceptionFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.ExecuteLimitFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.GenericFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.GenericImplFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TimeoutFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TokenFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.filter.TpsLimitFilter",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.model.ServiceRepository",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.Protocol"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":["org.apache.dubbo.rpc.ProxyFactory"] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.service.EchoService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.rpc.service.EchoServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.service.GenericService",
-  "allPublicMethods":true
-},
-{
-  "name":"org.apache.dubbo.rpc.service.GenericServiceDetector",
-  "allPublicMethods":true,
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.dubbo.rpc.support.MockProtocol",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"org.apache.log4j.Category"
-},
-{
-  "name":"org.apache.log4j.CategoryKey"
-},
-{
-  "name":"org.apache.log4j.Logger"
-},
-{
-  "name":"org.apache.log4j.helpers.Loader"
-},
-{
-  "name":"org.apache.zookeeper.ClientCnxnSocketNIO",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.misc.Cleaner",
-  "methods":[{"name":"clean","parameterTypes":[] }]
-},
-{
-  "name":"sun.misc.Unsafe",
-  "fields":[{"name":"theUnsafe"}],
-  "methods":[
-    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
-    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
-    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }
-  ]
-},
-{
-  "name":"sun.misc.VM",
-  "methods":[{"name":"maxDirectMemory","parameterTypes":[] }]
-},
-{
-  "name":"sun.nio.ch.SelectorImpl",
-  "fields":[
-    {"name":"publicSelectedKeys"}, 
-    {"name":"selectedKeys"}
-  ]
-},
-{
-  "name":"sun.security.pkcs.SignerInfo[]"
-},
-{
-  "name":"sun.security.provider.ConfigFile",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.MD5",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.NativePRNG",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.SHA",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.SHA2$SHA256",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.Sun",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.provider.X509Factory",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.RSAKeyFactory$Legacy",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.RSASignature$SHA256withRSA",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.rsa.SunRsaSign",
-  "methods":[{"name":"<init>","parameterTypes":[] }]
-},
-{
-  "name":"sun.security.util.ObjectIdentifier"
-},
-{
-  "name":"sun.security.x509.AuthorityInfoAccessExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.AuthorityKeyIdentifierExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.BasicConstraintsExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.CRLDistributionPointsExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.CertificateExtensions"
-},
-{
-  "name":"sun.security.x509.CertificatePoliciesExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.ExtendedKeyUsageExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.KeyUsageExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.SubjectAlternativeNameExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-},
-{
-  "name":"sun.security.x509.SubjectKeyIdentifierExtension",
-  "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
-}
+  {
+    "name": "boolean",
+    "allPublicMethods": true
+  },
+  {
+    "name": "com.intellij.rt.execution.application.AppMainV2$Agent",
+    "methods": [
+      {
+        "name": "premain",
+        "parameterTypes": [
+          "java.lang.String",
+          "java.lang.instrument.Instrumentation"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.bootstrap.ServerBootstrap$1"
+  },
+  {
+    "name": "io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor",
+    "methods": [
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.buffer.AbstractByteBufAllocator",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "io.netty.buffer.AbstractReferenceCountedByteBuf",
+    "fields": [
+      {
+        "name": "refCnt",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelDuplexHandler",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelHandlerAdapter",
+    "methods": [
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelInboundHandlerAdapter",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelInitializer",
+    "methods": [
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.ChannelOutboundHandlerAdapter",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.DefaultChannelPipeline$HeadContext",
+    "methods": [
+      {
+        "name": "bind",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "close",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "connect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.net.SocketAddress",
+          "java.net.SocketAddress",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "deregister",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "disconnect",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "io.netty.channel.ChannelPromise"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "flush",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "read",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.DefaultChannelPipeline$TailContext",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelUnregistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelWritabilityChanged",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.socket.nio.NioServerSocketChannel",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "io.netty.channel.socket.nio.NioSocketChannel",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.codec.ByteToMessageDecoder",
+    "methods": [
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.codec.MessageToByteEncoder",
+    "methods": [
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.handler.timeout.IdleStateHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "channelReadComplete",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRegistered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.ReferenceCountUtil",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+    "fields": [
+      {
+        "name": "producerLimit",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+    "fields": [
+      {
+        "name": "consumerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+    "fields": [
+      {
+        "name": "producerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
+    "fields": [
+      {
+        "name": "consumerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
+    "fields": [
+      {
+        "name": "producerIndex",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
+    "fields": [
+      {
+        "name": "producerLimit",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "java.io.File",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.io.Serializable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Cloneable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Comparable",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Enum",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Integer",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.lang.Number",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.lang.Object",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allPublicMethods": true
+  },
+  {
+    "name": "java.lang.StackTraceElement",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.lang.String"
+  },
+  {
+    "name": "java.lang.String[]"
+  },
+  {
+    "name": "java.lang.Thread",
+    "methods": [
+      {
+        "name": "getContextClassLoader",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.lang.Throwable",
+    "fields": [
+      {
+        "name": "detailMessage"
+      },
+      {
+        "name": "stackTrace"
+      }
+    ]
+  },
+  {
+    "name": "java.lang.management.ManagementFactory",
+    "methods": [
+      {
+        "name": "getRuntimeMXBean",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.lang.management.RuntimeMXBean",
+    "methods": [
+      {
+        "name": "getName",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.math.BigDecimal",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.math.BigInteger",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.net.URL",
+    "fields": [
+      {
+        "name": "ref"
+      }
+    ]
+  },
+  {
+    "name": "java.nio.Bits",
+    "methods": [
+      {
+        "name": "unaligned",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.nio.Buffer",
+    "fields": [
+      {
+        "name": "address",
+        "allowUnsafeAccess": true
+      }
+    ]
+  },
+  {
+    "name": "java.nio.DirectByteBuffer",
+    "fields": [
+      {
+        "name": "cleaner",
+        "allowUnsafeAccess": true
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long",
+          "int"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.security.MessageDigestSpi"
+  },
+  {
+    "name": "java.sql.Date",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.sql.Time",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.sql.Timestamp",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "long"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "java.time.Duration"
+  },
+  {
+    "name": "java.time.Instant"
+  },
+  {
+    "name": "java.time.LocalDate"
+  },
+  {
+    "name": "java.time.LocalDateTime"
+  },
+  {
+    "name": "java.time.LocalTime"
+  },
+  {
+    "name": "java.time.MonthDay"
+  },
+  {
+    "name": "java.time.OffsetDateTime"
+  },
+  {
+    "name": "java.time.OffsetTime"
+  },
+  {
+    "name": "java.time.Period"
+  },
+  {
+    "name": "java.time.Year"
+  },
+  {
+    "name": "java.time.YearMonth"
+  },
+  {
+    "name": "java.time.ZoneId"
+  },
+  {
+    "name": "java.time.ZoneOffset"
+  },
+  {
+    "name": "java.time.ZonedDateTime"
+  },
+  {
+    "name": "java.util.AbstractMap",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.ArrayList",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.BitSet",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "java.util.HashMap",
+    "allDeclaredMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.LinkedHashMap",
+    "allPublicConstructors": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "java.util.Map",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.NavigableMap",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.SortedMap",
+    "allDeclaredMethods": true
+  },
+  {
+    "name": "java.util.TreeMap",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "java.util.Map",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "java.util.concurrent.ConcurrentNavigableMap"
+  },
+  {
+    "name": "java.util.concurrent.ConcurrentSkipListMap"
+  },
+  {
+    "name": "javax.management.ObjectName",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apace.dubbo.graalvm.demo.DemoService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.curator.x.discovery.ServiceType",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.curator.x.discovery.details.OldServiceInstance",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.CommonScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.URL",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.beans.ScopeBeanExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.AdaptiveCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.JavassistCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.compiler.support.JdkCompiler",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.config.Environment",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.config.ModuleEnvironment",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory"
+  },
+  {
+    "name": "org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory"
+  },
+  {
+    "name": "org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.extension.inject.SpiExtensionInjector",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.infra.support.EnvironmentAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.lang.ShutdownHookCallbacks",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.jcl.JclLoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter"
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.Hessian2Serialization",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.serialize.hessian2.dubbo.WhitelistHessian2FactoryInitializer"
+  },
+  {
+    "name": "org.apache.dubbo.common.status.reporter.FrameworkStatusReportService",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.ThreadPool",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.ThreadPool$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.cached.CachedThreadPool",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.eager.EagerThreadPool"
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.fixed.FixedThreadPool",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.common.threadpool.support.limited.LimitedThreadPool"
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.URLAddress",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.URLParam",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.common.url.component.param.DefaultDynamicParamSource",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractInterfaceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractMethodConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractReferenceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.AbstractServiceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ApplicationConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "monitor"
+      },
+      {
+        "name": "registries"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ArgumentConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ConfigCenterConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "appExternalConfiguration"
+      },
+      {
+        "name": "externalConfiguration"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ConfigScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ConsumerConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.MethodConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "arguments"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ModuleConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "monitor"
+      },
+      {
+        "name": "registries"
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ProtocolConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ProviderConfig",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ReferenceConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "invoker"
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.ReferenceConfigBase",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.RegistryConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ServiceConfig",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.ServiceConfigBase",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.config.SslConfig",
+    "allPublicMethods": true,
+    "fields": [
+      {
+        "name": "clientKeyCertChainPathStream"
+      },
+      {
+        "name": "clientPrivateKeyPathStream"
+      },
+      {
+        "name": "clientTrustCertCollectionPathStream"
+      },
+      {
+        "name": "serverKeyCertChainPathStream"
+      },
+      {
+        "name": "serverPrivateKeyPathStream"
+      },
+      {
+        "name": "serverTrustCertCollectionPathStream"
+      }
+    ],
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.context.ConfigManager",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.deploy.DefaultApplicationDeployer",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.deploy.DefaultModuleDeployer",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.metadata.ServiceInstanceHostPortCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.config.utils.DefaultConfigValidator",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.demo.graalvm.provider.DemoServiceImpl",
+    "methods": [
+      {
+        "name": "sayHello",
+        "parameterTypes": [
+          "java.lang.String"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.InstanceMetadataChangedListener",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataInfo",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataInfo$ServiceInfo",
+    "allDeclaredFields": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.MetadataService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.EnumTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.builder.MapTypeBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.MethodDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.ServiceDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.definition.model.TypeDefinition",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.report.MetadataReportInstance",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.metadata.report.MetadataScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.MetricsService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.monitor.MonitorService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MetricsServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorClusterFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorFilter"
+  },
+  {
+    "name": "org.apache.dubbo.monitor.support.MonitorServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryFactoryWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.registry.RegistryFactory"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.RegistryScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultRegistryClusterIdentifier",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultServiceDiscoveryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.DefaultServiceInstance$Endpoint",
+    "allDeclaredFields": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.MetadataServiceNameMapping",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.MetadataServiceURLParamsMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.migration.DefaultMigrationAddressComparator",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.client.migration.MigrationRuleListener",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.integration.RegistryProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.multicast.MulticastRegistryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.multicast.MulticastServiceDiscoveryFactory"
+  },
+  {
+    "name": "org.apache.dubbo.registry.support.DefaultProviderFirstParams",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.support.RegistryManager",
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperInstance",
+    "allDeclaredFields": true,
+    "allDeclaredMethods": true,
+    "allDeclaredConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscoveryFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Dispatcher",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Dispatcher$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Transporter",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.remoting.Transporter$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.exchange.codec.ExchangeCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.exchange.support.header.HeaderExchanger",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.telnet.codec.TelnetCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.codec.TransportCodec"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyClient$1"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyClientHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalDecoder"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyServer$1"
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyServerHandler",
+    "methods": [
+      {
+        "name": "channelActive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelInactive",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext"
+        ]
+      },
+      {
+        "name": "channelRead",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "exceptionCaught",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Throwable"
+        ]
+      },
+      {
+        "name": "userEventTriggered",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object"
+        ]
+      },
+      {
+        "name": "write",
+        "parameterTypes": [
+          "io.netty.channel.ChannelHandlerContext",
+          "java.lang.Object",
+          "io.netty.channel.ChannelPromise"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.transport.netty4.NettyTransporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.remoting.zookeeper.curator5.Curator5ZookeeperTransporter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Invoker",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Protocol",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.Protocol$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.ProxyFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.ProxyFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Cluster",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Cluster$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ClusterScopeModelInitializer",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ConfiguratorFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.ConfiguratorFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.Directory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.RouterFactory",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.RouterFactory$Adaptive",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.configurator.absent.AbsentConfiguratorFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.configurator.override.OverrideConfiguratorFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.DefaultFilterChainBuilder",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.filter.support.ZoneAwareFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.governance.DefaultGovernanceRuleRepositoryImpl",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.merger.MergerFactory",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ClusterUtils",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.AccessLogFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ClassLoaderFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.CompatibleFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ContextFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.DeprecatedFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.EchoFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExceptionFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExecuteLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TimeoutFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.ConditionRouterFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.config.AppRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.condition.config.ServiceRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.file.FileRouterFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleAddressListenerInterceptor",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.mock.MockRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagDynamicStateRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.router.tag.TagStaticStateRouterFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.AvailableCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.BroadcastCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ClusterUtils",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailbackCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailfastCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailoverCluster",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.FailsafeCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.ForkingCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.MergeableCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.merger.DefaultProviderURLMergeProcessor",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.cluster.Cluster"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.AccessLogFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ClassLoaderFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.CompatibleFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ContextFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.DeprecatedFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.EchoFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExceptionFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.ExecuteLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TimeoutFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TokenFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.filter.TpsLimitFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.listener.DeprecatedInvokerListener"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.Protocol"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec",
+    "allPublicMethods": true,
+    "allPublicConstructors": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory"
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": [
+          "org.apache.dubbo.rpc.ProxyFactory"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.Destroyable",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.EchoService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.EchoServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.GenericService",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.dubbo.rpc.service.GenericServiceDetector",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.dubbo.rpc.support.MockProtocol"
+  },
+  {
+    "name": "org.apache.log4j.Appender"
+  },
+  {
+    "name": "org.apache.log4j.Category"
+  },
+  {
+    "name": "org.apache.log4j.CategoryKey"
+  },
+  {
+    "name": "org.apache.log4j.ConsoleAppender",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.log4j.Layout",
+    "allPublicMethods": true
+  },
+  {
+    "name": "org.apache.log4j.Logger"
+  },
+  {
+    "name": "org.apache.log4j.PatternLayout",
+    "allPublicMethods": true,
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "org.apache.log4j.helpers.Loader"
+  },
+  {
+    "name": "org.apache.log4j.spi.OptionHandler"
+  },
+  {
+    "name": "org.apache.zookeeper.ClientCnxnSocketNIO",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.Cleaner",
+    "methods": [
+      {
+        "name": "clean",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.Unsafe",
+    "fields": [
+      {
+        "name": "theUnsafe"
+      }
+    ],
+    "methods": [
+      {
+        "name": "copyMemory",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "java.lang.Object",
+          "long",
+          "long"
+        ]
+      },
+      {
+        "name": "getAndAddLong",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "long"
+        ]
+      },
+      {
+        "name": "getAndSetObject",
+        "parameterTypes": [
+          "java.lang.Object",
+          "long",
+          "java.lang.Object"
+        ]
+      }
+    ]
+  },
+  {
+    "name": "sun.misc.VM",
+    "methods": [
+      {
+        "name": "maxDirectMemory",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.nio.ch.SelectorImpl",
+    "fields": [
+      {
+        "name": "publicSelectedKeys"
+      },
+      {
+        "name": "selectedKeys"
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.ConfigFile",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.MD5",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.NativePRNG",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.SHA",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  },
+  {
+    "name": "sun.security.provider.Sun",
+    "methods": [
+      {
+        "name": "<init>",
+        "parameterTypes": []
+      }
+    ]
+  }
 ]
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json
index 7738933..f2febd2 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json
@@ -1,45 +1,58 @@
 {
-  "_comment": "Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License.  You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable la [...]
   "resources":{
-  "includes":[
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.infra.InfraAdapter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.logger.LoggerAdapter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.ThreadPool\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.url.component.param.DynamicParamSource\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Dispatcher\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Transporter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ConfiguratorFactory\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\\E"}, 
-    {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\\E"}, 
-    {"pattern":"\\QMETA-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/common/Version.class\\E"},
-    {"pattern":"\\Qdubbo.properties\\E"},
-    {"pattern":"\\Qorg/apache/dubbo/remoting/RemotingException.class\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/remoting/Transporters.class\\E"}, 
-    {"pattern":"\\Qorg/apache/dubbo/remoting/exchange/Exchangers.class\\E"}, 
-    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}
-  ]},
+    "includes":[
+      {"pattern":"\\QDENY_CLASS\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.ApplicationExt\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.context.ModuleExt\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.infra.InfraAdapter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.logger.LoggerAdapter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.ThreadPool\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.common.url.component.param.DynamicParamSource\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.AddressListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.ProviderFirstParams\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.client.migration.MigrationAddressComparator\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Dispatcher\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.Transporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.InvokerListener\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ConfiguratorFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ProviderURLMergeProcessor\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\\E"},
+      {"pattern":"\\QMETA-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer\\E"},
+      {"pattern":"\\QMETA-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\\E"},
+      {"pattern":"\\Qdubbo.properties\\E"},
+      {"pattern":"\\Qlog4j.properties\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/common/Version.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/RemotingException.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/Transporters.class\\E"},
+      {"pattern":"\\Qorg/apache/dubbo/remoting/exchange/Exchangers.class\\E"}
+    ]},
   "bundles":[]
 }
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/common/serialize/Serialization$Adaptive.java b/dubbo-native/src/main/java/org/apache/dubbo/common/serialize/Serialization$Adaptive.java
index 57fe01b..088c1ba 100644
--- a/dubbo-native/src/main/java/org/apache/dubbo/common/serialize/Serialization$Adaptive.java
+++ b/dubbo-native/src/main/java/org/apache/dubbo/common/serialize/Serialization$Adaptive.java
@@ -18,9 +18,6 @@ package org.apache.dubbo.common.serialize;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 public class Serialization$Adaptive implements org.apache.dubbo.common.serialize.Serialization {
-public java.lang.String getContentType()  {
-throw new UnsupportedOperationException("The method public abstract java.lang.String org.apache.dubbo.common.serialize.Serialization.getContentType() of interface org.apache.dubbo.common.serialize.Serialization is not adaptive method!");
-}
 public byte getContentTypeId()  {
 throw new UnsupportedOperationException("The method public abstract byte org.apache.dubbo.common.serialize.Serialization.getContentTypeId() of interface org.apache.dubbo.common.serialize.Serialization is not adaptive method!");
 }
@@ -42,4 +39,7 @@ ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apa
 org.apache.dubbo.common.serialize.Serialization extension = (org.apache.dubbo.common.serialize.Serialization)scopeModel.getExtensionLoader(org.apache.dubbo.common.serialize.Serialization.class).getExtension(extName);
 return extension.deserialize(arg0, arg1);
 }
+public java.lang.String getContentType()  {
+throw new UnsupportedOperationException("The method public abstract java.lang.String org.apache.dubbo.common.serialize.Serialization.getContentType() of interface org.apache.dubbo.common.serialize.Serialization is not adaptive method!");
+}
 }
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/rpc/Protocol$Adaptive.java b/dubbo-native/src/main/java/org/apache/dubbo/rpc/Protocol$Adaptive.java
index 766bd21..fe16e16 100644
--- a/dubbo-native/src/main/java/org/apache/dubbo/rpc/Protocol$Adaptive.java
+++ b/dubbo-native/src/main/java/org/apache/dubbo/rpc/Protocol$Adaptive.java
@@ -18,12 +18,6 @@ package org.apache.dubbo.rpc;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 public class Protocol$Adaptive implements org.apache.dubbo.rpc.Protocol {
-public void destroy()  {
-throw new UnsupportedOperationException("The method public abstract void org.apache.dubbo.rpc.Protocol.destroy() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!");
-}
-public int getDefaultPort()  {
-throw new UnsupportedOperationException("The method public abstract int org.apache.dubbo.rpc.Protocol.getDefaultPort() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!");
-}
 public org.apache.dubbo.rpc.Exporter export(org.apache.dubbo.rpc.Invoker arg0) throws org.apache.dubbo.rpc.RpcException {
 if (arg0 == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument == null");
 if (arg0.getUrl() == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument getUrl() == null");
@@ -46,4 +40,10 @@ return extension.refer(arg0, arg1);
 public java.util.List getServers()  {
 throw new UnsupportedOperationException("The method public default java.util.List org.apache.dubbo.rpc.Protocol.getServers() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!");
 }
+public void destroy()  {
+throw new UnsupportedOperationException("The method public abstract void org.apache.dubbo.rpc.Protocol.destroy() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!");
+}
+public int getDefaultPort()  {
+throw new UnsupportedOperationException("The method public abstract int org.apache.dubbo.rpc.Protocol.getDefaultPort() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!");
+}
 }
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/rpc/ProxyFactory$Adaptive.java b/dubbo-native/src/main/java/org/apache/dubbo/rpc/ProxyFactory$Adaptive.java
index 101925d..297287f 100644
--- a/dubbo-native/src/main/java/org/apache/dubbo/rpc/ProxyFactory$Adaptive.java
+++ b/dubbo-native/src/main/java/org/apache/dubbo/rpc/ProxyFactory$Adaptive.java
@@ -18,15 +18,14 @@ package org.apache.dubbo.rpc;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 public class ProxyFactory$Adaptive implements org.apache.dubbo.rpc.ProxyFactory {
-public java.lang.Object getProxy(org.apache.dubbo.rpc.Invoker arg0) throws org.apache.dubbo.rpc.RpcException {
-if (arg0 == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument == null");
-if (arg0.getUrl() == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument getUrl() == null");
-org.apache.dubbo.common.URL url = arg0.getUrl();
+public org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object arg0, java.lang.Class arg1, org.apache.dubbo.common.URL arg2) throws org.apache.dubbo.rpc.RpcException {
+if (arg2 == null) throw new IllegalArgumentException("url == null");
+org.apache.dubbo.common.URL url = arg2;
 String extName = url.getParameter("proxy", "javassist");
 if(extName == null) throw new IllegalStateException("Failed to get extension (org.apache.dubbo.rpc.ProxyFactory) name from url (" + url.toString() + ") use keys([proxy])");
 ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apache.dubbo.rpc.ProxyFactory.class);
 org.apache.dubbo.rpc.ProxyFactory extension = (org.apache.dubbo.rpc.ProxyFactory)scopeModel.getExtensionLoader(org.apache.dubbo.rpc.ProxyFactory.class).getExtension(extName);
-return extension.getProxy(arg0);
+return extension.getInvoker(arg0, arg1, arg2);
 }
 public java.lang.Object getProxy(org.apache.dubbo.rpc.Invoker arg0, boolean arg1) throws org.apache.dubbo.rpc.RpcException {
 if (arg0 == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument == null");
@@ -38,13 +37,14 @@ ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apa
 org.apache.dubbo.rpc.ProxyFactory extension = (org.apache.dubbo.rpc.ProxyFactory)scopeModel.getExtensionLoader(org.apache.dubbo.rpc.ProxyFactory.class).getExtension(extName);
 return extension.getProxy(arg0, arg1);
 }
-public org.apache.dubbo.rpc.Invoker getInvoker(java.lang.Object arg0, java.lang.Class arg1, org.apache.dubbo.common.URL arg2) throws org.apache.dubbo.rpc.RpcException {
-if (arg2 == null) throw new IllegalArgumentException("url == null");
-org.apache.dubbo.common.URL url = arg2;
+public java.lang.Object getProxy(org.apache.dubbo.rpc.Invoker arg0) throws org.apache.dubbo.rpc.RpcException {
+if (arg0 == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument == null");
+if (arg0.getUrl() == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.Invoker argument getUrl() == null");
+org.apache.dubbo.common.URL url = arg0.getUrl();
 String extName = url.getParameter("proxy", "javassist");
 if(extName == null) throw new IllegalStateException("Failed to get extension (org.apache.dubbo.rpc.ProxyFactory) name from url (" + url.toString() + ") use keys([proxy])");
 ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apache.dubbo.rpc.ProxyFactory.class);
 org.apache.dubbo.rpc.ProxyFactory extension = (org.apache.dubbo.rpc.ProxyFactory)scopeModel.getExtensionLoader(org.apache.dubbo.rpc.ProxyFactory.class).getExtension(extName);
-return extension.getInvoker(arg0, arg1, arg2);
+return extension.getProxy(arg0);
 }
 }
diff --git a/dubbo-native/src/main/java/org/apache/dubbo/rpc/cluster/Cluster$Adaptive.java b/dubbo-native/src/main/java/org/apache/dubbo/rpc/cluster/Cluster$Adaptive.java
index 7048752..5f80166 100644
--- a/dubbo-native/src/main/java/org/apache/dubbo/rpc/cluster/Cluster$Adaptive.java
+++ b/dubbo-native/src/main/java/org/apache/dubbo/rpc/cluster/Cluster$Adaptive.java
@@ -18,8 +18,13 @@ package org.apache.dubbo.rpc.cluster;
 import org.apache.dubbo.rpc.model.ScopeModel;
 import org.apache.dubbo.rpc.model.ScopeModelUtil;
 public class Cluster$Adaptive implements org.apache.dubbo.rpc.cluster.Cluster {
-@Override
-public org.apache.dubbo.rpc.Invoker join(org.apache.dubbo.rpc.cluster.Directory arg0, boolean buildFilterChain) throws org.apache.dubbo.rpc.RpcException {
+public org.apache.dubbo.rpc.cluster.Cluster getCluster(org.apache.dubbo.rpc.model.ScopeModel arg0, java.lang.String arg1)  {
+throw new UnsupportedOperationException("The method public static org.apache.dubbo.rpc.cluster.Cluster org.apache.dubbo.rpc.cluster.Cluster.getCluster(org.apache.dubbo.rpc.model.ScopeModel,java.lang.String) of interface org.apache.dubbo.rpc.cluster.Cluster is not adaptive method!");
+}
+public org.apache.dubbo.rpc.cluster.Cluster getCluster(org.apache.dubbo.rpc.model.ScopeModel arg0, java.lang.String arg1, boolean arg2)  {
+throw new UnsupportedOperationException("The method public static org.apache.dubbo.rpc.cluster.Cluster org.apache.dubbo.rpc.cluster.Cluster.getCluster(org.apache.dubbo.rpc.model.ScopeModel,java.lang.String,boolean) of interface org.apache.dubbo.rpc.cluster.Cluster is not adaptive method!");
+}
+public org.apache.dubbo.rpc.Invoker join(org.apache.dubbo.rpc.cluster.Directory arg0, boolean arg1) throws org.apache.dubbo.rpc.RpcException {
 if (arg0 == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.cluster.Directory argument == null");
 if (arg0.getUrl() == null) throw new IllegalArgumentException("org.apache.dubbo.rpc.cluster.Directory argument getUrl() == null");
 org.apache.dubbo.common.URL url = arg0.getUrl();
@@ -27,12 +32,6 @@ String extName = url.getParameter("cluster", "failover");
 if(extName == null) throw new IllegalStateException("Failed to get extension (org.apache.dubbo.rpc.cluster.Cluster) name from url (" + url.toString() + ") use keys([cluster])");
 ScopeModel scopeModel = ScopeModelUtil.getOrDefault(url.getScopeModel(), org.apache.dubbo.rpc.cluster.Cluster.class);
 org.apache.dubbo.rpc.cluster.Cluster extension = (org.apache.dubbo.rpc.cluster.Cluster)scopeModel.getExtensionLoader(org.apache.dubbo.rpc.cluster.Cluster.class).getExtension(extName);
-return extension.join(arg0, buildFilterChain);
-}
-public org.apache.dubbo.rpc.cluster.Cluster getCluster(java.lang.String arg0)  {
-throw new UnsupportedOperationException("The method public static org.apache.dubbo.rpc.cluster.Cluster org.apache.dubbo.rpc.cluster.Cluster.getCluster(java.lang.String) of interface org.apache.dubbo.rpc.cluster.Cluster is not adaptive method!");
-}
-public org.apache.dubbo.rpc.cluster.Cluster getCluster(java.lang.String arg0, boolean arg1)  {
-throw new UnsupportedOperationException("The method public static org.apache.dubbo.rpc.cluster.Cluster org.apache.dubbo.rpc.cluster.Cluster.getCluster(java.lang.String,boolean) of interface org.apache.dubbo.rpc.cluster.Cluster is not adaptive method!");
+return extension.join(arg0, arg1);
 }
 }
diff --git a/dubbo-native/src/main/resources/Dockerfile b/dubbo-native/src/main/resources/Dockerfile
new file mode 100644
index 0000000..34d97f3
--- /dev/null
+++ b/dubbo-native/src/main/resources/Dockerfile
@@ -0,0 +1,30 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+# Create graalvm environment for running dubbo native projects
+
+FROM maven:3-jdk-11-slim
+
+WORKDIR /opt
+
+RUN apt-get update \
+    && apt-get install -y gcc zlib1g-dev libstdc++-10-dev \
+    && curl -L -o /opt/graalvm-ce.tar.gz "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.1.0/graalvm-ce-java11-linux-amd64-21.1.0.tar.gz" \
+    && tar -xf graalvm-ce.tar.gz \
+    && /opt/graalvm-ce-java11-21.1.0/bin/gu install native-image \
+    && rm graalvm-ce.tar.gz
+
+ENV PATH=/opt/graalvm-ce-java11-21.1.0/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ENV JAVA_HOME=/opt/graalvm-ce-java11-21.1.0