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

terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new 06ddc45bb Fix Nacos integration nativetest for GraalVM Native Image 
(#2552)
06ddc45bb is described below

commit 06ddc45bba9932d9931bf81ffaa91f1360ff28bc
Author: Hengqian Ling <[email protected]>
AuthorDate: Sat Oct 10 22:18:25 2026 +0800

    Fix Nacos integration nativetest for GraalVM Native Image (#2552)
---
 .github/workflows/graalvm.yml                      |    3 +-
 .../configuration/graalvm-native-image.cn.md       |   91 +-
 .../configuration/graalvm-native-image.en.md       |   97 +-
 .../user-manual/configuration/java-api.cn.md       |   16 +-
 .../user-manual/configuration/java-api.en.md       |   17 +-
 .../configuration/registry-center/etcd.cn.md       |   25 +-
 .../configuration/registry-center/etcd.en.md       |   26 +-
 pom.xml                                            |   29 +-
 .../nacos-client/3.2.4/reachability-metadata.json  |  741 +++++++++++++
 .../1.82.2/reachability-metadata.json              |  180 +++
 .../reachability-metadata.json                     | 1164 +++++++++++++++++---
 registry-center/provider/nacos/pom.xml             |    9 +
 test/native/native-image-filter/extra-filter.json  |    4 +
 test/native/pom.xml                                |   28 +
 .../commons/job/dataflow/JavaDataflowJob.java      |   14 -
 .../natived/commons/job/simple/JavaSimpleJob.java  |    8 -
 .../test/natived/it/nacos/NacosJavaTest.java       |   26 +-
 .../test/natived/it/operation/JavaTest.java        |   28 +-
 .../test/natived/it/staticd/SpringBootDTest.java   |    6 +-
 test/native/src/test/resources/logback-test.xml    |    6 +-
 20 files changed, 2238 insertions(+), 280 deletions(-)

diff --git a/.github/workflows/graalvm.yml b/.github/workflows/graalvm.yml
index ac2097c86..c3a952901 100644
--- a/.github/workflows/graalvm.yml
+++ b/.github/workflows/graalvm.yml
@@ -35,10 +35,11 @@ jobs:
         java: [ '25.0.2' ]
         os: [ 'ubuntu-latest' ]
     runs-on: ${{ matrix.os }}
+    timeout-minutes: 60
     steps:
       - uses: actions/checkout@v4
       - name: Set up GraalVM CE ${{ matrix.java }}
-        uses: graalvm/setup-graalvm@6f3fa030c4b8f77c1f554a860f593a654538fa38  
# v1.5.6
+        uses: graalvm/setup-graalvm@0426e2e191540e8514dff98dc52a5f5146a2a276  
# v1.6.6
         with:
           java-version: ${{ matrix.java }}
           distribution: 'graalvm-community'
diff --git a/docs/content/user-manual/configuration/graalvm-native-image.cn.md 
b/docs/content/user-manual/configuration/graalvm-native-image.cn.md
index d806e8e02..87d4940de 100644
--- a/docs/content/user-manual/configuration/graalvm-native-image.cn.md
+++ b/docs/content/user-manual/configuration/graalvm-native-image.cn.md
@@ -27,6 +27,14 @@ ElasticJob 不为已停止维护的 GraalVM CE 版本设置 CI。
 使用者需要主动使用 GraalVM Reachability Metadata 中央仓库。
 如下配置可供参考,以配置项目额外的 Maven Profiles,以 GraalVM Native Build Tools 的文档为准。
 
+当应用的 classpath 同时包含 Nacos 客户端和 Logback 时,`grpc-netty-shaded` 使用的 shaded Netty 
类会在镜像构建期
+初始化 Logback logger,构建将以 `ch.qos.logback.classic.Logger was found in the image 
heap` 失败。
+请通过构建参数 `--initialize-at-run-time=io.grpc.netty.shaded.io.netty` 将整棵 shaded 
Netty 树推迟到运行时初始化。
+
+`native-maven-plugin` 1.1.14 捆绑的 metadata 仓库将 `io.netty:netty-common` 和 
`io.netty:netty-transport` 的
+latest metadata 标记为 Netty `5.0.0.Alpha2`。将该 metadata 应用于 Netty 4.1.x 会导致 gRPC 
客户端在协议协商阶段挂起,
+因此需要通过 `metadataRepository` 将这些构件以及 `io.netty:netty-codec` 固定到最后一个 Netty 4.x 
metadata。
+
 ```xml
 <project>
     <dependencies>
@@ -42,8 +50,33 @@ ElasticJob 不为已停止维护的 GraalVM CE 版本设置 CI。
             <plugin>
                 <groupId>org.graalvm.buildtools</groupId>
                 <artifactId>native-maven-plugin</artifactId>
-                <version>1.1.3</version>
+                <version>1.1.14</version>
                 <extensions>true</extensions>
+                <configuration>
+                    <buildArgs>
+                        
<arg>--initialize-at-run-time=io.grpc.netty.shaded.io.netty</arg>
+                    </buildArgs>
+                    <metadataRepository>
+                        <enabled>true</enabled>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-common</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-transport</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-codec</artifactId>
+                                <metadataVersion>4.1.42.Final</metadataVersion>
+                            </dependency>
+                        </dependencies>
+                    </metadataRepository>
+                </configuration>
                 <executions>
                     <execution>
                         <id>build-native</id>
@@ -73,19 +106,31 @@ ElasticJob 不为已停止维护的 GraalVM CE 版本设置 CI。
 由于 https://github.com/gradle/gradle/issues/17559 的限制,用户需要通过 Maven 依赖的形式引入 
Metadata Repository 的 JSON 文件。
 参考 https://github.com/graalvm/native-build-tools/issues/572 。
 
+当应用的 classpath 同时包含 Nacos 客户端和 Logback 时,请通过构建参数
+`--initialize-at-run-time=io.grpc.netty.shaded.io.netty` 将 shaded Netty 
树推迟到运行时初始化。
+当启用插件的 metadata 仓库检索而不是捆绑的 ZIP 文件时,请通过 `moduleToConfigVersion` 固定 Netty 
metadata 版本,
+避免将 Netty `5.0.0.Alpha2` 的 metadata 应用于 Netty 4.1.x。
+
 ```groovy
 plugins {
-   id 'org.graalvm.buildtools.native' version '1.1.3'
+   id 'org.graalvm.buildtools.native' version '1.1.14'
 }
 
 dependencies {
    implementation 
'org.apache.shardingsphere.elasticjob:elasticjob-bootstrap:${elasticjob.version}'
-   implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.3', classifier: 'repository', 
ext: 'zip')
+   implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.14', classifier: 'repository', 
ext: 'zip')
 }
 
 graalvmNative {
+   binaries.all {
+       buildArgs.add('--initialize-at-run-time=io.grpc.netty.shaded.io.netty')
+   }
    metadataRepository {
         enabled.set(false)
+        // 当启用 metadata 仓库检索时,请固定 Netty metadata 版本:
+        // moduleToConfigVersion.put("io.netty:netty-common", "4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-transport", 
"4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-codec", "4.1.42.Final")
    }
 }
 ```
@@ -96,6 +141,7 @@ graalvmNative {
 
 使用者需要主动使用 GraalVM Reachability Metadata 中央仓库。
 如下配置可供参考,以配置项目额外的 Maven Profiles,以 GraalVM Native Build Tools 的文档为准。
+与“使用 ElasticJob 的 Java API”一节同理,`buildArgs` 与 `metadataRepository` 配置是必需的。
 
 ```xml
 <project>
@@ -123,8 +169,33 @@ graalvmNative {
             <plugin>
                 <groupId>org.graalvm.buildtools</groupId>
                 <artifactId>native-maven-plugin</artifactId>
-                <version>1.1.3</version>
+                <version>1.1.14</version>
                 <extensions>true</extensions>
+                <configuration>
+                    <buildArgs>
+                        
<arg>--initialize-at-run-time=io.grpc.netty.shaded.io.netty</arg>
+                    </buildArgs>
+                    <metadataRepository>
+                        <enabled>true</enabled>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-common</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-transport</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-codec</artifactId>
+                                <metadataVersion>4.1.42.Final</metadataVersion>
+                            </dependency>
+                        </dependencies>
+                    </metadataRepository>
+                </configuration>
                 <executions>
                     <execution>
                         <id>build-native</id>
@@ -166,12 +237,13 @@ graalvmNative {
 如下配置可供参考,以配置项目额外的 Gradle Tasks,以 GraalVM Native Build Tools 的文档为准。
 由于 https://github.com/gradle/gradle/issues/17559 的限制,用户需要通过 Maven 依赖的形式引入 
Metadata Repository 的 JSON 文件。
 参考 https://github.com/graalvm/native-build-tools/issues/572 。
+`buildArgs` 与 `moduleToConfigVersion` 配置与“使用 ElasticJob 的 Java API”一节同理,是必需的。
 
 ```groovy
 plugins {
     id 'org.springframework.boot' version '3.5.16'
     id 'io.spring.dependency-management' version '1.1.7'
-    id 'org.graalvm.buildtools.native' version '1.1.3'
+    id 'org.graalvm.buildtools.native' version '1.1.14'
 }
 
 dependencies {
@@ -179,12 +251,19 @@ dependencies {
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
     implementation 
'org.apache.shardingsphere.elasticjob:elasticjob-spring-boot-starter:${elasticjob.version}'
-    implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.3', classifier: 'repository', 
ext: 'zip')
+    implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.14', classifier: 'repository', 
ext: 'zip')
 }
 
 graalvmNative {
+   binaries.all {
+       buildArgs.add('--initialize-at-run-time=io.grpc.netty.shaded.io.netty')
+   }
    metadataRepository {
         enabled.set(false)
+        // 当启用 metadata 仓库检索时,请固定 Netty metadata 版本:
+        // moduleToConfigVersion.put("io.netty:netty-common", "4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-transport", 
"4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-codec", "4.1.42.Final")
    }
 }
 ```
diff --git a/docs/content/user-manual/configuration/graalvm-native-image.en.md 
b/docs/content/user-manual/configuration/graalvm-native-image.en.md
index 862f4b83d..85f70ce23 100644
--- a/docs/content/user-manual/configuration/graalvm-native-image.en.md
+++ b/docs/content/user-manual/configuration/graalvm-native-image.en.md
@@ -29,6 +29,17 @@ Users need to actively use the GraalVM Reachability Metadata 
Central Repository.
 The following configuration is for reference. To configure additional Maven 
Profiles for the project, 
 refer to the documentation of GraalVM Native Build Tools.
 
+When the application classpath contains both the Nacos client and Logback, the 
shaded Netty classes used by
+`grpc-netty-shaded` initialize Logback loggers during the image build and the 
build fails with
+`ch.qos.logback.classic.Logger was found in the image heap`. Pass
+`--initialize-at-run-time=io.grpc.netty.shaded.io.netty` as a build argument 
to defer the whole shaded
+Netty tree to run time.
+
+The metadata repository bundled with `native-maven-plugin` 1.1.14 marks the 
Netty `5.0.0.Alpha2` metadata as the
+latest one for `io.netty:netty-common` and `io.netty:netty-transport`. 
Applying that metadata to Netty 4.1.x makes
+the gRPC client hang during protocol negotiation, so pin these artifacts, as 
well as `io.netty:netty-codec`,
+to the last Netty 4.x metadata through `metadataRepository`.
+
 ```xml
 <project>
     <dependencies>
@@ -44,8 +55,33 @@ refer to the documentation of GraalVM Native Build Tools.
             <plugin>
                 <groupId>org.graalvm.buildtools</groupId>
                 <artifactId>native-maven-plugin</artifactId>
-                <version>1.1.3</version>
+                <version>1.1.14</version>
                 <extensions>true</extensions>
+                <configuration>
+                    <buildArgs>
+                        
<arg>--initialize-at-run-time=io.grpc.netty.shaded.io.netty</arg>
+                    </buildArgs>
+                    <metadataRepository>
+                        <enabled>true</enabled>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-common</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-transport</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-codec</artifactId>
+                                <metadataVersion>4.1.42.Final</metadataVersion>
+                            </dependency>
+                        </dependencies>
+                    </metadataRepository>
+                </configuration>
                 <executions>
                     <execution>
                         <id>build-native</id>
@@ -75,19 +111,32 @@ The following configuration is for reference. To configure 
additional Gradle Tas
 Due to the limitations of https://github.com/gradle/gradle/issues/17559, users 
need to introduce the Metadata Repository JSON file in the form of Maven 
dependencies.
 Refer to https://github.com/graalvm/native-build-tools/issues/572.
 
+When the application classpath contains both the Nacos client and Logback, add
+`--initialize-at-run-time=io.grpc.netty.shaded.io.netty` to the build 
arguments to defer the shaded Netty tree
+to run time. When the metadata repository search of the plugin is enabled 
instead of the bundled ZIP file, pin
+the Netty metadata versions through `moduleToConfigVersion` so that the Netty 
`5.0.0.Alpha2` metadata is not
+applied to Netty 4.1.x.
+
 ```groovy
 plugins {
-   id 'org.graalvm.buildtools.native' version '1.1.3'
+   id 'org.graalvm.buildtools.native' version '1.1.14'
 }
 
 dependencies {
    implementation 
'org.apache.shardingsphere.elasticjob:elasticjob-bootstrap:${elasticjob.version}'
-   implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.3', classifier: 'repository', 
ext: 'zip')
+   implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.14', classifier: 'repository', 
ext: 'zip')
 }
 
 graalvmNative {
+   binaries.all {
+       buildArgs.add('--initialize-at-run-time=io.grpc.netty.shaded.io.netty')
+   }
    metadataRepository {
         enabled.set(false)
+        // When the metadata repository search is enabled instead, pin the 
Netty metadata versions:
+        // moduleToConfigVersion.put("io.netty:netty-common", "4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-transport", 
"4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-codec", "4.1.42.Final")
    }
 }
 ```
@@ -99,6 +148,8 @@ graalvmNative {
 Users need to actively use the GraalVM Reachability Metadata Central 
Repository.
 The following configuration is for reference. 
 To configure additional Maven Profiles for the project, refer to the 
documentation of GraalVM Native Build Tools.
+The `buildArgs` and `metadataRepository` configuration is required for the 
same reasons as described in the
+"Using ElasticJob's Java API" section.
 
 ```xml
 <project>
@@ -126,8 +177,33 @@ To configure additional Maven Profiles for the project, 
refer to the documentati
             <plugin>
                 <groupId>org.graalvm.buildtools</groupId>
                 <artifactId>native-maven-plugin</artifactId>
-                <version>1.1.3</version>
+                <version>1.1.14</version>
                 <extensions>true</extensions>
+                <configuration>
+                    <buildArgs>
+                        
<arg>--initialize-at-run-time=io.grpc.netty.shaded.io.netty</arg>
+                    </buildArgs>
+                    <metadataRepository>
+                        <enabled>true</enabled>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-common</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-transport</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-codec</artifactId>
+                                <metadataVersion>4.1.42.Final</metadataVersion>
+                            </dependency>
+                        </dependencies>
+                    </metadataRepository>
+                </configuration>
                 <executions>
                     <execution>
                         <id>build-native</id>
@@ -169,12 +245,14 @@ Users need to actively use the GraalVM Reachability 
Metadata Central Repository.
 The following configuration is for reference. To configure additional Gradle 
Tasks for the project, refer to the documentation of GraalVM Native Build Tools.
 Due to the limitations of https://github.com/gradle/gradle/issues/17559, users 
need to introduce the Metadata Repository JSON file in the form of Maven 
dependencies.
 Refer to https://github.com/graalvm/native-build-tools/issues/572 .
+The `buildArgs` and `moduleToConfigVersion` configuration is required for the 
same reasons as described in the
+"Using ElasticJob's Java API" section.
 
 ```groovy
 plugins {
     id 'org.springframework.boot' version '3.5.16'
     id 'io.spring.dependency-management' version '1.1.7'
-    id 'org.graalvm.buildtools.native' version '1.1.3'
+    id 'org.graalvm.buildtools.native' version '1.1.14'
 }
 
 dependencies {
@@ -182,12 +260,19 @@ dependencies {
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
     testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
     implementation 
'org.apache.shardingsphere.elasticjob:elasticjob-spring-boot-starter:${elasticjob.version}'
-    implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.3', classifier: 'repository', 
ext: 'zip')
+    implementation(group: 'org.graalvm.buildtools', name: 
'graalvm-reachability-metadata', version: '1.1.14', classifier: 'repository', 
ext: 'zip')
 }
 
 graalvmNative {
+    binaries.all {
+        buildArgs.add('--initialize-at-run-time=io.grpc.netty.shaded.io.netty')
+    }
     metadataRepository {
         enabled.set(false)
+        // When the metadata repository search is enabled instead, pin the 
Netty metadata versions:
+        // moduleToConfigVersion.put("io.netty:netty-common", "4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-transport", 
"4.1.115.Final")
+        // moduleToConfigVersion.put("io.netty:netty-codec", "4.1.42.Final")
     }
 }
 ```
diff --git a/docs/content/user-manual/configuration/java-api.cn.md 
b/docs/content/user-manual/configuration/java-api.cn.md
index 9431341a7..5e1af30db 100644
--- a/docs/content/user-manual/configuration/java-api.cn.md
+++ b/docs/content/user-manual/configuration/java-api.cn.md
@@ -6,7 +6,21 @@ chapter = true
 
 ## 注册中心配置
 
-用于注册和协调作业分布式行为的组件,目前仅支持 ZooKeeper。
+用于注册和协调作业分布式行为的组件。
+ElasticJob 支持 `ZooKeeper`(默认)、`etcd`、`Nacos` 和内存注册中心。
+除 `elasticjob-bootstrap` 外,还需要添加注册中心实现对应的 Maven 依赖:
+
+| 注册中心     | Maven 依赖 |
+|----------|------|
+| ZooKeeper | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-zookeeper-curator`
 |
+| etcd     | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-etcd` |
+| Nacos    | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-nacos` |
+| Memory   | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-memory` |
+
+依赖版本使用 `${elasticjob.version}`。
+各注册中心实现的可配置属性与使用示例,请参阅[注册中心配置](/cn/user-manual/configuration/registry-center)。
+
+默认的 ZooKeeper 实现如下所示。
 
 类名称:org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration
 
diff --git a/docs/content/user-manual/configuration/java-api.en.md 
b/docs/content/user-manual/configuration/java-api.en.md
index f7a4bc1a9..7ad0c7a4d 100644
--- a/docs/content/user-manual/configuration/java-api.en.md
+++ b/docs/content/user-manual/configuration/java-api.en.md
@@ -6,7 +6,22 @@ chapter = true
 
 ## Registry Center Configuration
 
-The component which is used to register and coordinate the distributed 
behavior of jobs, currently only supports `ZooKeeper`.
+The component which is used to register and coordinate the distributed 
behavior of jobs.
+ElasticJob supports `ZooKeeper` (the default), `etcd`, `Nacos` and an 
in-memory registry center.
+Besides `elasticjob-bootstrap`, add the Maven dependency of the registry 
center implementation to the project:
+
+| Registry Center | Maven Dependency                                           
                         |
+|-----------------|-------------------------------------------------------------------------------------|
+| ZooKeeper       | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-zookeeper-curator`
 |
+| etcd            | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-etcd`          
    |
+| Nacos           | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-nacos`         
    |
+| Memory          | 
`org.apache.shardingsphere.elasticjob:elasticjob-registry-center-memory`        
    |
+
+The dependencies use `${elasticjob.version}` as their version.
+Refer to [Registry Center 
Configuration](/en/user-manual/configuration/registry-center) for the 
configuration
+properties and usage examples of each implementation.
+
+The default ZooKeeper implementation is described below.
 
 Class name: 
`org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration`
 
diff --git a/docs/content/user-manual/configuration/registry-center/etcd.cn.md 
b/docs/content/user-manual/configuration/registry-center/etcd.cn.md
index ffaa799bc..1ec7c7bab 100644
--- a/docs/content/user-manual/configuration/registry-center/etcd.cn.md
+++ b/docs/content/user-manual/configuration/registry-center/etcd.cn.md
@@ -73,26 +73,7 @@ public class EtcdRegistryCenterExample {
 }
 ```
 
-### Spring Boot Starter
-
-```yaml
-elasticjob:
-  reg-center:
-    type: etcd
-    server-lists: http://host1:2379,http://host2:2379
-    namespace: elasticjob
-    connection-timeout-milliseconds: 5000
-    username: root
-    password: password
-```
-
-### Spring Namespace
+### Spring Boot Starter 与 Spring Namespace
 
-```xml
-<elasticjob:etcd id="regCenter" 
-    server-lists="http://host1:2379,http://host2:2379"; 
-    namespace="elasticjob"
-    connection-timeout-milliseconds="5000"
-    username="root"
-    password="password" />
-```
+目前 Spring Boot Starter 和 Spring Namespace 仅支持 ZooKeeper,因此 etcd 只能通过 Java API 或
+`RegistryCenterFactory` 
使用。详见[注册中心配置](/cn/user-manual/configuration/registry-center)。
diff --git a/docs/content/user-manual/configuration/registry-center/etcd.en.md 
b/docs/content/user-manual/configuration/registry-center/etcd.en.md
index af7ff5270..bc3293ca8 100644
--- a/docs/content/user-manual/configuration/registry-center/etcd.en.md
+++ b/docs/content/user-manual/configuration/registry-center/etcd.en.md
@@ -73,26 +73,8 @@ public class EtcdRegistryCenterExample {
 }
 ```
 
-### Spring Boot Starter
-
-```yaml
-elasticjob:
-  reg-center:
-    type: etcd
-    server-lists: http://host1:2379,http://host2:2379
-    namespace: elasticjob
-    connection-timeout-milliseconds: 5000
-    username: root
-    password: password
-```
-
-### Spring Namespace
+### Spring Boot Starter and Spring Namespace
 
-```xml
-<elasticjob:etcd id="regCenter" 
-    server-lists="http://host1:2379,http://host2:2379"; 
-    namespace="elasticjob"
-    connection-timeout-milliseconds="5000"
-    username="root"
-    password="password" />
-```
+The Spring Boot Starter and the Spring Namespace only support ZooKeeper at 
present,
+so etcd can only be used through the Java API or `RegistryCenterFactory`.
+See the [Registry Center 
Configuration](/en/user-manual/configuration/registry-center) page for details.
diff --git a/pom.xml b/pom.xml
index 4342112c2..931d88446 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,6 +56,7 @@
         <maven.version.range>[3.5.0,)</maven.version.range>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.deploy.skip>false</maven.deploy.skip>
+        <native.agent.enabled>false</native.agent.enabled>
         
         <!-- 3rd party library versions -->
         <shardingsphere.version>5.4.1</shardingsphere.version>
@@ -137,7 +138,7 @@
         <maven-plugin-plugin.version>3.4</maven-plugin-plugin.version>
         <checksum-maven-plugin.version>1.10</checksum-maven-plugin.version>
         
-        <native-maven-plugin.version>1.1.3</native-maven-plugin.version>
+        <native-maven-plugin.version>1.1.14</native-maven-plugin.version>
     </properties>
     
     <dependencyManagement>
@@ -233,6 +234,17 @@
                 <groupId>com.alibaba.nacos</groupId>
                 <artifactId>nacos-client</artifactId>
                 <version>${nacos-client.version}</version>
+                <classifier>pure</classifier>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.nacos</groupId>
+                <artifactId>nacos-common</artifactId>
+                <version>${nacos-client.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba.nacos</groupId>
+                <artifactId>nacos-api</artifactId>
+                <version>${nacos-client.version}</version>
             </dependency>
             <dependency>
                 <groupId>io.grpc</groupId>
@@ -954,6 +966,9 @@
         </profile>
         <profile>
             <id>generateMetadata</id>
+            <properties>
+                <native.agent.enabled>true</native.agent.enabled>
+            </properties>
             <build>
                 <pluginManagement>
                     <plugins>
@@ -973,7 +988,6 @@
                             <configuration>
                                 <skipNativeTests>true</skipNativeTests>
                                 <agent>
-                                    <enabled>true</enabled>
                                     <defaultMode>conditional</defaultMode>
                                     <modes>
                                         <conditional>
@@ -993,16 +1007,9 @@
                             </configuration>
                             <executions>
                                 <execution>
-                                    <id>build-native</id>
+                                    <id>merge-agent-files</id>
                                     <goals>
-                                        <goal>compile-no-fork</goal>
-                                    </goals>
-                                    <phase>package</phase>
-                                </execution>
-                                <execution>
-                                    <id>test-native</id>
-                                    <goals>
-                                        <goal>test</goal>
+                                        <goal>merge-agent-files</goal>
                                     </goals>
                                     <phase>test</phase>
                                 </execution>
diff --git 
a/reachability-metadata/src/main/resources/META-INF/native-image/com.alibaba.nacos/nacos-client/3.2.4/reachability-metadata.json
 
b/reachability-metadata/src/main/resources/META-INF/native-image/com.alibaba.nacos/nacos-client/3.2.4/reachability-metadata.json
new file mode 100644
index 000000000..4e515267b
--- /dev/null
+++ 
b/reachability-metadata/src/main/resources/META-INF/native-image/com.alibaba.nacos/nacos-client/3.2.4/reachability-metadata.json
@@ -0,0 +1,741 @@
+{
+  "reflection": [
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.ability.ClientAbilities",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.ability.ServerAbilities",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.config.ability.ClientConfigAbility",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.config.ability.ServerConfigAbility",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.AbstractConfigRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.AbstractFuzzyWatchNotifyRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ClientConfigMetricRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ClientConfigMetricRequest$MetricsKey",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigBatchListenRequest$ConfigListenContext",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigChangeNotifyRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigFuzzyWatchChangeNotifyRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigFuzzyWatchRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigFuzzyWatchSyncRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigFuzzyWatchSyncRequest$Context",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigPublishRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.config.remote.request.ConfigQueryRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.ConfigRemoveRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.request.cluster.ConfigChangeClusterSyncRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ClientConfigMetricResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigChangeBatchListenResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigChangeBatchListenResponse$ConfigContext",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigChangeNotifyResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigFuzzyWatchChangeNotifyResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigFuzzyWatchResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigFuzzyWatchSyncResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigPublishResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigQueryResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.ConfigRemoveResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.api.config.remote.response.cluster.ConfigChangeClusterSyncResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.grpc.auto.Metadata",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.grpc.auto.Metadata$Builder",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.grpc.auto.Payload",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.grpc.auto.Payload$Builder",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.Payload",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.ability.ClientRemoteAbility",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.ability.ServerRemoteAbility",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ClientDetectionRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ConnectResetRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ConnectionSetupRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.HealthCheckRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.InternalRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.PushAckRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.Request",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.RequestMeta",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.RequestMeta$1",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ServerCheckRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ServerLoaderInfoRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ServerReloadRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.ServerRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.request.SetupAckRequest",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ClientDetectionResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ConnectResetResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ErrorResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.HealthCheckResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.Response",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ResponseCode",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ServerCheckResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ServerLoaderInfoResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.ServerReloadResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.api.remote.response.SetupAckResponse",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.client.config.NacosConfigService",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.client.config.impl.ClientWorker",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": 
"com.alibaba.nacos.client.config.impl.ClientWorker$ConfigRpcTransportClient",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.common.remote.TlsConfig",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.common.remote.client.RpcClient",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "com.alibaba.nacos.api.config.ConfigService"
+      },
+      "type": "com.alibaba.nacos.common.remote.client.RpcClientTlsConfig",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    }
+  ]
+}
diff --git 
a/reachability-metadata/src/main/resources/META-INF/native-image/io.grpc/grpc-netty-shaded/1.82.2/reachability-metadata.json
 
b/reachability-metadata/src/main/resources/META-INF/native-image/io.grpc/grpc-netty-shaded/1.82.2/reachability-metadata.json
new file mode 100644
index 000000000..8b2ddc745
--- /dev/null
+++ 
b/reachability-metadata/src/main/resources/META-INF/native-image/io.grpc/grpc-netty-shaded/1.82.2/reachability-metadata.json
@@ -0,0 +1,180 @@
+{
+  "reflection": [
+    {
+      "condition": {
+        "typeReached": "io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder"
+      },
+      "type": "io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder"
+      },
+      "type": 
"io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$PlaintextHandler",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": "io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder"
+      },
+      "type": "io.grpc.netty.shaded.io.grpc.netty.UdsNettyChannelProvider",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.channel.ChannelOutboundBuffer",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.channel.DefaultChannelConfig",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.channel.epoll.AbstractEpollChannel",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.util.DefaultAttributeMap",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.util.Recycler$DefaultHandle",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.util.ResourceLeakDetector$DefaultResourceLeak",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": "io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueConsumerIndexField",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueProducerIndexField",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    },
+    {
+      "condition": {
+        "typeReached": 
"io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent"
+      },
+      "type": 
"io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueProducerLimitField",
+      "allDeclaredFields": true,
+      "allDeclaredMethods": true,
+      "allDeclaredConstructors": true,
+      "queryAllDeclaredMethods": true,
+      "queryAllDeclaredConstructors": true
+    }
+  ]
+}
diff --git 
a/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere.elasticjob/generated-reachability-metadata/reachability-metadata.json
 
b/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere.elasticjob/generated-reachability-metadata/reachability-metadata.json
index 973b7bfe3..c639c52b5 100644
--- 
a/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere.elasticjob/generated-reachability-metadata/reachability-metadata.json
+++ 
b/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere.elasticjob/generated-reachability-metadata/reachability-metadata.json
@@ -50,7 +50,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.reconcile.ReconcileService"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -62,7 +62,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.reconcile.ReconcileService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionContextService"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -74,7 +74,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionContextService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -86,7 +86,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -98,7 +98,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ListenServersChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter$EtcdWatchListener"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -110,7 +110,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ShardingTotalCountChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.memory.MemoryRegistryCenter"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -122,7 +122,19 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter$NacosDataWatch"
+      },
+      "type": "java.util.Properties",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter"
       },
       "type": "java.util.Properties",
       "methods": [
@@ -132,6 +144,12 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "type": "libcore.io.Memory"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.item.JobItemExecutorFactory"
@@ -238,6 +256,12 @@
             "java.lang.String"
           ]
         },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
         {
           "name": "setProps",
           "parameterTypes": [
@@ -258,6 +282,12 @@
             "java.lang.String"
           ]
         },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
         {
           "name": "setProps",
           "parameterTypes": [
@@ -462,6 +492,108 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.RescheduleListenerManager$CronSettingAndJobEventChangedJobListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setCron",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setDescription",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setDisabled",
+          "parameterTypes": [
+            "boolean"
+          ]
+        },
+        {
+          "name": "setFailover",
+          "parameterTypes": [
+            "boolean"
+          ]
+        },
+        {
+          "name": "setJobName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobParameter",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobShardingStrategyType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setMaxTimeDiffSeconds",
+          "parameterTypes": [
+            "int"
+          ]
+        },
+        {
+          "name": "setMisfire",
+          "parameterTypes": [
+            "boolean"
+          ]
+        },
+        {
+          "name": "setMonitorExecution",
+          "parameterTypes": [
+            "boolean"
+          ]
+        },
+        {
+          "name": "setOverwrite",
+          "parameterTypes": [
+            "boolean"
+          ]
+        },
+        {
+          "name": "setReconcileIntervalMinutes",
+          "parameterTypes": [
+            "int"
+          ]
+        },
+        {
+          "name": "setShardingItemParameters",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setShardingTotalCount",
+          "parameterTypes": [
+            "int"
+          ]
+        },
+        {
+          "name": "setStaticSharding",
+          "parameterTypes": [
+            "boolean"
+          ]
+        }
+      ]
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager"
@@ -475,9 +607,9 @@
           ]
         },
         {
-          "name": "setProps",
+          "name": "setJobExtraConfigurations",
           "parameterTypes": [
-            "java.util.Properties"
+            "java.util.Collection"
           ]
         }
       ]
@@ -498,12 +630,6 @@
             "java.lang.String"
           ]
         },
-        {
-          "name": "setDescription",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setDisabled",
           "parameterTypes": [
@@ -528,18 +654,6 @@
             "java.lang.String"
           ]
         },
-        {
-          "name": "setJobParameter",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
-        {
-          "name": "setJobShardingStrategyType",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setMaxTimeDiffSeconds",
           "parameterTypes": [
@@ -592,10 +706,16 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager$JobCrashedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverService"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
       "methods": [
+        {
+          "name": "setCron",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
         {
           "name": "setJobShardingStrategyType",
           "parameterTypes": [
@@ -616,6 +736,12 @@
             "java.lang.String"
           ]
         },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
         {
           "name": "setJobShardingStrategyType",
           "parameterTypes": [
@@ -642,6 +768,12 @@
             "java.lang.String"
           ]
         },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
         {
           "name": "setProps",
           "parameterTypes": [
@@ -662,6 +794,18 @@
             "java.lang.String"
           ]
         },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
+        {
+          "name": "setJobShardingStrategyType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
         {
           "name": "setProps",
           "parameterTypes": [
@@ -680,18 +824,6 @@
           "name": "<init>",
           "parameterTypes": []
         },
-        {
-          "name": "setCron",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
-        {
-          "name": "setDescription",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setDisabled",
           "parameterTypes": [
@@ -704,30 +836,12 @@
             "boolean"
           ]
         },
-        {
-          "name": "setJobExtraConfigurations",
-          "parameterTypes": [
-            "java.util.Collection"
-          ]
-        },
         {
           "name": "setJobName",
           "parameterTypes": [
             "java.lang.String"
           ]
         },
-        {
-          "name": "setJobParameter",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
-        {
-          "name": "setJobShardingStrategyType",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setMaxTimeDiffSeconds",
           "parameterTypes": [
@@ -791,15 +905,9 @@
           ]
         },
         {
-          "name": "setJobShardingStrategyType",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
-        {
-          "name": "setProps",
+          "name": "setJobExtraConfigurations",
           "parameterTypes": [
-            "java.util.Properties"
+            "java.util.Collection"
           ]
         }
       ]
@@ -820,12 +928,6 @@
             "java.lang.String"
           ]
         },
-        {
-          "name": "setDescription",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setDisabled",
           "parameterTypes": [
@@ -850,18 +952,6 @@
             "java.lang.String"
           ]
         },
-        {
-          "name": "setJobParameter",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
-        {
-          "name": "setJobShardingStrategyType",
-          "parameterTypes": [
-            "java.lang.String"
-          ]
-        },
         {
           "name": "setMaxTimeDiffSeconds",
           "parameterTypes": [
@@ -886,12 +976,6 @@
             "boolean"
           ]
         },
-        {
-          "name": "setProps",
-          "parameterTypes": [
-            "java.util.Properties"
-          ]
-        },
         {
           "name": "setReconcileIntervalMinutes",
           "parameterTypes": [
@@ -931,7 +1015,13 @@
           ]
         },
         {
-          "name": "setProps",
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
+        {
+          "name": "setProps",
           "parameterTypes": [
             "java.util.Properties"
           ]
@@ -1230,6 +1320,140 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter$EtcdWatchListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
+      "methods": [
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Properties"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.memory.MemoryRegistryCenter"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
+      "methods": [
+        {
+          "name": "setCron",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Properties"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter$NacosDataWatch"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
+      "methods": [
+        {
+          "name": "setDescription",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobParameter",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Properties"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO",
+      "methods": [
+        {
+          "name": "setCron",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setDescription",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobExtraConfigurations",
+          "parameterTypes": [
+            "java.util.Collection"
+          ]
+        },
+        {
+          "name": "setJobParameter",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setJobShardingStrategyType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Properties"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJOBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJOBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJOCustomizer"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJOCustomizer"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobScheduler"
@@ -1248,6 +1472,18 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobShutdownHookPluginBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobShutdownHookPluginCustomizer"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.instance.InstanceNode"
@@ -1412,6 +1648,30 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstanceBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstanceBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.bootstrap.type.ScheduleJobBootstrap"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstanceCustomizer"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.JobInstanceCustomizer"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService"
@@ -1462,7 +1722,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.facade.AbstractJobFacade"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1486,7 +1746,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager$FailoverSettingsChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.facade.ShardingJobFacade"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1510,7 +1770,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.MonitorExecutionListenerManager$MonitorExecutionSettingsChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1534,7 +1794,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ShardingTotalCountChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1558,7 +1818,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.settings.JobConfigurationAPIImpl"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager$FailoverSettingsChangedJobListener"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1582,7 +1842,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.statistics.JobStatisticsAPIImpl"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.reconcile.ReconcileService"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
       "methods": [
@@ -1606,59 +1866,317 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO"
-      },
-      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfigurationConverter"
-    },
-    {
-      "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.exception.RegExceptionHandler"
-      },
-      "type": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.exception.ZookeeperCuratorIgnoredExceptionProvider"
-    },
-    {
-      "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
-      },
-      "type": 
"org.apache.shardingsphere.elasticjob.script.executor.ScriptJobExecutor"
-    },
-    {
-      "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.item.JobItemExecutorFactory"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionContextService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.simple.executor.SimpleJobExecutor"
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.script.executor.ScriptJobExecutor"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext",
-      "fields": [
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
         {
-          "name": "jobName"
+          "name": "<init>",
+          "parameterTypes": []
         },
         {
-          "name": "jobParameter"
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
         },
         {
-          "name": "shardingItem"
-        },
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ListenServersChangedJobListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
         {
-          "name": "shardingParameter"
+          "name": "<init>",
+          "parameterTypes": []
         },
         {
-          "name": "shardingTotalCount"
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
         },
         {
-          "name": "taskId"
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
         }
       ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.setup.JobClassNameProviderFactory"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ShardingTotalCountChangedJobListener"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.spring.core.setup.SpringProxyJobClassNameProvider"
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.settings.JobConfigurationAPIImpl"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.statistics.JobStatisticsAPIImpl"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.memory.MemoryRegistryCenter"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setTracingStorageConfiguration",
+          "parameterTypes": [
+            
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingStorageConfiguration"
+          ]
+        },
+        {
+          "name": "setType",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfigurationBeanInfo"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfigurationConverter"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.yaml.YamlTracingConfigurationCustomizer"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.exception.RegExceptionHandler"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.reg.etcd.exception.EtcdIgnoredExceptionProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.exception.RegExceptionHandler"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.reg.nacos.exception.NacosIgnoredExceptionProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.exception.RegExceptionHandler"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.exception.ZookeeperCuratorIgnoredExceptionProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.script.executor.ScriptJobExecutor"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.item.JobItemExecutorFactory"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.simple.executor.SimpleJobExecutor"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.script.executor.ScriptJobExecutor"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.spi.executor.item.param.ShardingContext",
+      "fields": [
+        {
+          "name": "jobName"
+        },
+        {
+          "name": "jobParameter"
+        },
+        {
+          "name": "shardingItem"
+        },
+        {
+          "name": "shardingParameter"
+        },
+        {
+          "name": "shardingTotalCount"
+        },
+        {
+          "name": "taskId"
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListener"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.setup.JobClassNameProviderFactory"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.spring.core.setup.SpringProxyJobClassNameProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.listener.RDBTracingListener"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.listener.RDBTracingListenerFactory"
     },
     {
       "condition": {
@@ -1668,49 +2186,265 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.DB2TracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.GaussDBTracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.H2TracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.MySQLTracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.OracleTracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.PostgreSQLTracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.SQLServerTracingStorageDatabaseType"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.facade.AbstractJobFacade"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.facade.ShardingJobFacade"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.DB2TracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.GaussDBTracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager$FailoverSettingsChangedJobListener"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.H2TracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.reconcile.ReconcileService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.MySQLTracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionContextService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.OracleTracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ExecutionService"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.PostgreSQLTracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.repository.RDBJobEventRepository"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ListenServersChangedJobListener"
       },
-      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.type.impl.SQLServerTracingStorageDatabaseType"
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
+      "methods": [
+        {
+          "name": "<init>",
+          "parameterTypes": []
+        },
+        {
+          "name": "setDataSourceClassName",
+          "parameterTypes": [
+            "java.lang.String"
+          ]
+        },
+        {
+          "name": "setProps",
+          "parameterTypes": [
+            "java.util.Map"
+          ]
+        }
+      ]
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.ConfigurationService"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ShardingTotalCountChangedJobListener"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1734,7 +2468,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.failover.FailoverListenerManager$FailoverSettingsChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingService"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1758,7 +2492,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.MonitorExecutionListenerManager$MonitorExecutionSettingsChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.settings.JobConfigurationAPIImpl"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1782,7 +2516,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.sharding.ShardingListenerManager$ShardingTotalCountChangedJobListener"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.statistics.JobStatisticsAPIImpl"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1806,7 +2540,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.settings.JobConfigurationAPIImpl"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.memory.MemoryRegistryCenter"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1830,7 +2564,7 @@
     },
     {
       "condition": {
-        "typeReached": 
"org.apache.shardingsphere.elasticjob.lifecycle.internal.statistics.JobStatisticsAPIImpl"
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfiguration",
       "methods": [
@@ -1852,14 +2586,104 @@
         }
       ]
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfigurationBeanInfo"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.config.JobConfigurationPOJO"
       },
       "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfigurationConverter"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.internal.schedule.JobTriggerListener"
+      },
+      "type": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.yaml.YamlDataSourceConfigurationCustomizer"
     }
   ],
   "resources": [
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "META-INF/native/libnetty_transport_native_epoll_x86_64.so"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.api.config.filter.IConfigFilter"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.client.address.ServerListProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.common.labels.LabelsCollector"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.common.logging.NacosLoggingAdapterBuilder"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.common.notify.EventPublisher"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": 
"META-INF/services/com.alibaba.nacos.plugin.auth.spi.client.AbstractClientAuthService"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "META-INF/services/io.grpc.LoadBalancerProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "META-INF/services/io.grpc.NameResolverProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "META-INF/services/io.vertx.core.spi.VerticleFactory"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "META-INF/services/io.vertx.core.spi.VertxServiceProvider"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.tracing.ElasticJobTracingConfiguration$RDBTracingConfiguration"
+      },
+      "glob": "META-INF/services/java.sql.Driver"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": "META-INF/services/javax.xml.parsers.SAXParserFactory"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.threadpool.ExecutorServiceReloader"
@@ -1884,6 +2708,12 @@
       },
       "glob": 
"META-INF/services/org.apache.shardingsphere.elasticjob.reg.exception.IgnoredExceptionProvider"
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "glob": 
"META-INF/services/org.apache.shardingsphere.elasticjob.spi.executor.error.handler.JobErrorHandler"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.executor.item.JobItemExecutorFactory"
@@ -1896,6 +2726,12 @@
       },
       "glob": 
"META-INF/services/org.apache.shardingsphere.elasticjob.spi.executor.item.type.TypedJobItemExecutor"
     },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "glob": 
"META-INF/services/org.apache.shardingsphere.elasticjob.spi.tracing.listener.TracingListenerFactory"
+    },
     {
       "condition": {
         "typeReached": 
"org.apache.shardingsphere.elasticjob.kernel.tracing.storage.TracingStorageConverterFactory"
@@ -1919,6 +2755,36 @@
         "typeReached": 
"org.apache.shardingsphere.elasticjob.tracing.rdb.storage.sql.SQLPropertiesFactory"
       },
       "glob": "META-INF/sql/H2.properties"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": "nacos-logback14.xml"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.nacos.NacosRegistryCenter"
+      },
+      "glob": "nacos-version.txt"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.tracing.ElasticJobTracingConfiguration$RDBTracingConfiguration"
+      },
+      "glob": "org/h2/util/data.zip"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.spring.boot.job.ElasticJobBootstrapConfiguration"
+      },
+      "glob": "org/quartz/core/quartz-build.properties"
+    },
+    {
+      "condition": {
+        "typeReached": 
"org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter"
+      },
+      "glob": "vertx-default-jul-logging.properties"
     }
   ]
 }
\ No newline at end of file
diff --git a/registry-center/provider/nacos/pom.xml 
b/registry-center/provider/nacos/pom.xml
index bf98b5f46..be5825c40 100644
--- a/registry-center/provider/nacos/pom.xml
+++ b/registry-center/provider/nacos/pom.xml
@@ -36,6 +36,15 @@
         <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-client</artifactId>
+            <classifier>pure</classifier>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.nacos</groupId>
+            <artifactId>nacos-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.nacos</groupId>
+            <artifactId>nacos-api</artifactId>
         </dependency>
     </dependencies>
 </project>
diff --git a/test/native/native-image-filter/extra-filter.json 
b/test/native/native-image-filter/extra-filter.json
index 5e2edc82d..235713dbd 100644
--- a/test/native/native-image-filter/extra-filter.json
+++ b/test/native/native-image-filter/extra-filter.json
@@ -2,9 +2,13 @@
   "rules": [
     {"includeClasses": "**"},
 
+    {"excludeClasses": "android.**"},
+    {"excludeClasses": "ch.**"},
     {"excludeClasses": "com.**"},
+    {"excludeClasses": "io.**"},
     {"excludeClasses": "java.**"},
     {"excludeClasses": "javax.**"},
+    {"excludeClasses": "jdk.**"},
     {"excludeClasses": "kotlinx.**"},
     {"excludeClasses": "org.**"},
     {"excludeClasses": "sun.**"},
diff --git a/test/native/pom.xml b/test/native/pom.xml
index 90212de2c..b8aa216f6 100644
--- a/test/native/pom.xml
+++ b/test/native/pom.xml
@@ -127,6 +127,34 @@
                 <groupId>org.graalvm.buildtools</groupId>
                 <artifactId>native-maven-plugin</artifactId>
                 <version>${native-maven-plugin.version}</version>
+                <configuration>
+                    <agent>
+                        <enabled>${native.agent.enabled}</enabled>
+                    </agent>
+                    <buildArgs>
+                        
<arg>--initialize-at-run-time=io.grpc.netty.shaded.io.netty</arg>
+                    </buildArgs>
+                    <metadataRepository>
+                        <enabled>true</enabled>
+                        <dependencies>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-common</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-transport</artifactId>
+                                
<metadataVersion>4.1.115.Final</metadataVersion>
+                            </dependency>
+                            <dependency>
+                                <groupId>io.netty</groupId>
+                                <artifactId>netty-codec</artifactId>
+                                <metadataVersion>4.1.42.Final</metadataVersion>
+                            </dependency>
+                        </dependencies>
+                    </metadataRepository>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/dataflow/JavaDataflowJob.java
 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/dataflow/JavaDataflowJob.java
index 1b3a69431..55ebed656 100644
--- 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/dataflow/JavaDataflowJob.java
+++ 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/dataflow/JavaDataflowJob.java
@@ -23,8 +23,6 @@ import 
org.apache.shardingsphere.elasticjob.test.natived.commons.entity.Foo;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.repository.FooRepository;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.repository.FooRepositoryFactory;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.List;
 
 public class JavaDataflowJob implements DataflowJob<Foo> {
@@ -33,23 +31,11 @@ public class JavaDataflowJob implements DataflowJob<Foo> {
     
     @Override
     public List<Foo> fetchData(final ShardingContext shardingContext) {
-        System.out.printf(
-                "Item: %s | Time: %s | Thread: %s | %s%n",
-                shardingContext.getShardingItem(),
-                new SimpleDateFormat("HH:mm:ss").format(new Date()),
-                Thread.currentThread().getId(),
-                "DATAFLOW FETCH");
         return 
fooRepository.findUnfinishedData(shardingContext.getShardingParameter(), 10);
     }
     
     @Override
     public void processData(final ShardingContext shardingContext, final 
List<Foo> data) {
-        System.out.printf(
-                "Item: %s | Time: %s | Thread: %s | %s%n",
-                shardingContext.getShardingItem(),
-                new SimpleDateFormat("HH:mm:ss").format(new Date()),
-                Thread.currentThread().getId(),
-                "DATAFLOW PROCESS");
         
data.stream().mapToLong(Foo::getId).forEach(fooRepository::setCompleted);
     }
 }
diff --git 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/simple/JavaSimpleJob.java
 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/simple/JavaSimpleJob.java
index 58978416c..ed70adff3 100644
--- 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/simple/JavaSimpleJob.java
+++ 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/commons/job/simple/JavaSimpleJob.java
@@ -23,8 +23,6 @@ import 
org.apache.shardingsphere.elasticjob.test.natived.commons.entity.Foo;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.repository.FooRepository;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.repository.FooRepositoryFactory;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.List;
 
 public class JavaSimpleJob implements SimpleJob {
@@ -33,12 +31,6 @@ public class JavaSimpleJob implements SimpleJob {
     
     @Override
     public void execute(final ShardingContext shardingContext) {
-        System.out.printf(
-                "Item: %s | Time: %s | Thread: %s | %s%n",
-                shardingContext.getShardingItem(),
-                new SimpleDateFormat("HH:mm:ss").format(new Date()),
-                Thread.currentThread().getId(),
-                "SIMPLE");
         List<Foo> data = 
fooRepository.findUnfinishedData(shardingContext.getShardingParameter(), 10);
         
data.stream().mapToLong(Foo::getId).forEach(fooRepository::setCompleted);
     }
diff --git 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/nacos/NacosJavaTest.java
 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/nacos/NacosJavaTest.java
index c317415fc..593f9b7a0 100644
--- 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/nacos/NacosJavaTest.java
+++ 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/nacos/NacosJavaTest.java
@@ -32,9 +32,7 @@ import 
org.apache.shardingsphere.elasticjob.script.props.ScriptJobProperties;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.job.dataflow.JavaDataflowJob;
 import 
org.apache.shardingsphere.elasticjob.test.natived.commons.job.simple.JavaSimpleJob;
 import org.awaitility.Awaitility;
-import org.awaitility.core.ConditionTimeoutException;
 import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Assumptions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledInNativeImage;
@@ -107,26 +105,18 @@ class NacosJavaTest {
     /**
      * Wait until the Nacos server actually serves config operations.
      *
-     * <p>The container is reported started before its gRPC server accepts 
connections,
-     * so probe with a real write followed by a direct read until it 
succeeds.</p>
-     *
-     * <p>The Nacos client talks to the server over a shaded gRPC transport 
that cannot
-     * complete the handshake inside a GraalVM native image. Abort instead of 
failing,
-     * since the transport is provided by the Nacos client, not by this 
project.</p>
+     * <p>The container is reported started before its gRPC server accepts
+     * connections, so probe with a real write followed by a direct read until
+     * it succeeds.</p>
      */
     private static void awaitNacosReady() {
         String probeKey = "/elasticjob-test-native-nacos-java-readiness-probe";
         String probeValue = "ready";
-        try {
-            Awaitility.await().atMost(3L, TimeUnit.MINUTES).until(() -> {
-                regCenter.persist(probeKey, probeValue);
-                return probeValue.equals(regCenter.getDirectly(probeKey));
-            });
-            regCenter.remove(probeKey);
-        } catch (final ConditionTimeoutException ex) {
-            Assumptions.abort("Nacos server did not become ready. "
-                    + "Its shaded gRPC transport is unusable in this native 
image.");
-        }
+        Awaitility.await().atMost(3L, TimeUnit.MINUTES).until(() -> {
+            regCenter.persist(probeKey, probeValue);
+            return probeValue.equals(regCenter.getDirectly(probeKey));
+        });
+        regCenter.remove(probeKey);
     }
     
     @Test
diff --git 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/operation/JavaTest.java
 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/operation/JavaTest.java
index 939866716..3d898d731 100644
--- 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/operation/JavaTest.java
+++ 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/operation/JavaTest.java
@@ -109,21 +109,6 @@ class JavaTest {
         testingServer.close();
     }
     
-    /**
-     * TODO Executing {@link 
JobConfigurationAPI#removeJobConfiguration(String)} will always cause the 
listener
-     *  to throw an exception. This is not acceptable behavior.
-     *  <pre>
-     *   <code>
-     *  Caused by: java.lang.IllegalStateException: Expected state [STARTED] 
was [STOPPED]
-     *  at 
org.apache.curator.shaded.com.google.common.base.Preconditions.checkState(Preconditions.java:835)
-     *  at 
org.apache.curator.framework.imps.CuratorFrameworkImpl.checkState(CuratorFrameworkImpl.java:465)
-     *  at 
org.apache.curator.framework.imps.CuratorFrameworkImpl.getData(CuratorFrameworkImpl.java:498)
-     *  at 
org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter.getDirectly(ZookeeperRegistryCenter.java:179)
-     *  ... 12 common frames omitted
-     *   </code>
-     *  </pre>
-     *
-     */
     @Test
     void testJobConfigurationAPI() {
         String jobName = "testJobConfigurationAPI";
@@ -290,11 +275,20 @@ class JavaTest {
                         .build());
         job.schedule();
         ShardingStatisticsAPI shardingStatisticsAPI = new 
ShardingStatisticsAPIImpl(secondRegCenter);
+        List<ShardingInfo> shardingInfos = new ArrayList<>();
         Awaitility.await()
                 .atMost(1L, TimeUnit.MINUTES)
                 .ignoreExceptions()
-                .until(() -> 3 == 
shardingStatisticsAPI.getShardingInfo(jobName).size());
-        shardingStatisticsAPI.getShardingInfo(jobName).forEach(shardingInfo -> 
{
+                .until(() -> {
+                    Collection<ShardingInfo> current = 
shardingStatisticsAPI.getShardingInfo(jobName);
+                    if (3 != current.size() || current.stream().anyMatch(each 
-> null == each.getServerIp())) {
+                        return false;
+                    }
+                    shardingInfos.clear();
+                    shardingInfos.addAll(current);
+                    return true;
+                });
+        shardingInfos.forEach(shardingInfo -> {
             String serverIp = shardingInfo.getServerIp();
             assertThat(serverIp, notNullValue());
             assertThat(shardingInfo.getInstanceId(), startsWith(serverIp + 
"@-@"));
diff --git 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/staticd/SpringBootDTest.java
 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/staticd/SpringBootDTest.java
index 53e3bb542..2a29c0cc5 100644
--- 
a/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/staticd/SpringBootDTest.java
+++ 
b/test/native/src/test/java/org/apache/shardingsphere/elasticjob/test/natived/it/staticd/SpringBootDTest.java
@@ -129,10 +129,12 @@ class SpringBootDTest {
                 .failover(true)
                 .build();
         ScheduleJobBootstrap firstJob = new 
ScheduleJobBootstrap(zookeeperRegistryCenter,
-                (SimpleJob) shardingContext -> System.out.println("test"),
+                (SimpleJob) shardingContext -> {
+                },
                 jobConfig);
         ScheduleJobBootstrap secondJob = new 
ScheduleJobBootstrap(zookeeperRegistryCenter,
-                (SimpleJob) shardingContext -> System.out.println("test"),
+                (SimpleJob) shardingContext -> {
+                },
                 jobConfig);
         assertDoesNotThrow(() -> {
             firstJob.schedule();
diff --git a/test/native/src/test/resources/logback-test.xml 
b/test/native/src/test/resources/logback-test.xml
index d49a3aaa2..48a98c486 100644
--- a/test/native/src/test/resources/logback-test.xml
+++ b/test/native/src/test/resources/logback-test.xml
@@ -26,8 +26,10 @@
     <logger name="org.apache.shardingsphere.elasticjob" level="warn" 
additivity="false">
         <appender-ref ref="console" />
     </logger>
-    <root>
-        <level value="error" />
+    <logger 
name="org.apache.shardingsphere.elasticjob.reg.etcd.EtcdRegistryCenter" 
level="error" additivity="false">
+        <appender-ref ref="console" />
+    </logger>
+    <root level="error">
         <appender-ref ref="console" />
     </root>
 </configuration>

Reply via email to