diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
index 8c39771..f354d6d 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/config/ConfigCenter.java
@@ -38,6 +38,7 @@
 import org.apache.dubbo.registry.RegistryService;
 import org.apache.dubbo.registry.client.ServiceDiscovery;
 import org.apache.dubbo.registry.client.ServiceDiscoveryFactory;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -46,6 +47,7 @@
 import java.util.Arrays;
 
 import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
+import static org.apache.dubbo.common.constants.RegistryConstants.ENABLE_EMPTY_PROTECTION_KEY;
 import static org.apache.dubbo.registry.client.ServiceDiscoveryFactory.getExtension;
 
 @Configuration
@@ -147,8 +149,8 @@
             }
             registryUrl = formUrl(registryAddress, registryGroup, registryNameSpace, username, password);
         }
-        RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
-        registry = registryFactory.getRegistry(registryUrl);
+        RegistryFactory registryFactory = ApplicationModel.defaultModel().getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
+        registry = registryFactory.getRegistry(registryUrl.addParameter(ENABLE_EMPTY_PROTECTION_KEY, String.valueOf(false)));
         return registry;
     }
 
@@ -166,7 +168,7 @@
             }
         }
         if (metadataUrl != null) {
-            metaDataCollector = ExtensionLoader.getExtensionLoader(MetaDataCollector.class).getExtension(metadataUrl.getProtocol());
+            metaDataCollector = ApplicationModel.defaultModel().getExtensionLoader(MetaDataCollector.class).getExtension(metadataUrl.getProtocol());
             metaDataCollector.setUrl(metadataUrl);
             metaDataCollector.init();
         } else {
@@ -179,11 +181,10 @@
     @Bean(destroyMethod = "destroy")
     @DependsOn("dubboRegistry")
     ServiceDiscovery getServiceDiscoveryRegistry() throws Exception {
-        URL registryURL = registryUrl.setPath(RegistryService.class.getName());
+        URL registryURL = registryUrl.setPath(RegistryService.class.getName())
+                .addParameter(ENABLE_EMPTY_PROTECTION_KEY, String.valueOf(false));
         ServiceDiscoveryFactory factory = getExtension(registryURL);
-        ServiceDiscovery serviceDiscovery = factory.getServiceDiscovery(registryURL);
-        serviceDiscovery.initialize(registryURL);
-        return serviceDiscovery;
+        return factory.getServiceDiscovery(registryURL);
     }
 
     @Bean
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminMappingListener.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminMappingListener.java
index 750c734..d6ffcc7 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminMappingListener.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/AdminMappingListener.java
@@ -126,4 +126,8 @@
         }
     }
 
+    @Override
+    public void stop() {
+        // ignore
+    }
 }
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/impl/ZookeeperServiceMapping.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/impl/ZookeeperServiceMapping.java
index 799c040..4c5dc5d 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/impl/ZookeeperServiceMapping.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/mapping/impl/ZookeeperServiceMapping.java
@@ -26,6 +26,7 @@
 import org.apache.dubbo.metadata.MappingListener;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.List;
 import java.util.Set;
@@ -45,7 +46,7 @@
 
     @Override
     public void init(URL url) {
-        ZookeeperTransporter zookeeperTransporter = ZookeeperTransporter.getExtension();
+        ZookeeperTransporter zookeeperTransporter = ZookeeperTransporter.getExtension(ApplicationModel.defaultModel());
         zkClient = zookeeperTransporter.connect(url);
         listenerAll();
     }
diff --git a/pom.xml b/pom.xml
index bc381c0..866dfdb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
 		<revision>0.4.0</revision>
 		<main.basedir>${project.basedir}</main.basedir>
 		<commons-lang3-version>3.7</commons-lang3-version>
-		<dubbo-version>3.0.2.1</dubbo-version>
+		<dubbo-version>3.0.8</dubbo-version>
 		<fastjson-version>1.2.67</fastjson-version>
 		<springfox-swagger-version>2.9.2</springfox-swagger-version>
 		<jacoco-version>0.8.2</jacoco-version>
@@ -64,6 +64,7 @@
 		<guava-version>20.0</guava-version>
 		<dubbo-mock-version>3.0.0</dubbo-mock-version>
 		<mybatis-plus-boot-version>3.4.2</mybatis-plus-boot-version>
+		<curator-test-veriosn>2.12.0</curator-test-veriosn>
 
 		<maven-checkstyle-plugin-version>3.0.0</maven-checkstyle-plugin-version>
 		<spring-boot-version>2.3.12.RELEASE</spring-boot-version>
@@ -143,6 +144,11 @@
 				<version>${mybatis-plus-boot-version}</version>
 			</dependency>
 
+			<dependency>
+				<groupId>org.apache.curator</groupId>
+				<artifactId>curator-test</artifactId>
+				<version>${curator-test-veriosn}</version>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>
 
