You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by je...@apache.org on 2018/08/16 08:56:13 UTC

[incubator-dubbo] branch master updated: Qos enhancement (#2153)

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

jerrick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 7277f5e  Qos enhancement (#2153)
7277f5e is described below

commit 7277f5ed1826e3ff926e483af466c9bef16898e2
Author: Huxing Zhang <hu...@gmail.com>
AuthorDate: Thu Aug 16 16:55:52 2018 +0800

    Qos enhancement (#2153)
    
    * Not to accept foreign ip by default.
    
    * Log if fail to start qos server. #2046
    
    * Fix typo. No functional change.
    
    * Remove redundant declaration.
    
    * Sync dubbo.xsd to compact dubbo.xsd.
    
    * Simplify code and add comments.
    
    * Add log message if qos is not enabled.
    
    * Fix UT failure.
---
 .../org/apache/dubbo/config/ApplicationConfig.java |   3 +
 .../src/main/resources/META-INF/compat/dubbo.xsd   | 353 +++++++++++----------
 .../src/main/resources/META-INF/dubbo.xsd          | 348 ++++++++++----------
 .../dubbo/qos/protocol/QosProtocolWrapper.java     |  18 +-
 .../dubbo/qos/protocol/QosProtocolWrapperTest.java |   6 +-
 .../registry/integration/RegistryProtocol.java     |  17 +-
 6 files changed, 381 insertions(+), 364 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index a3d46a0..86d4001 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
@@ -71,10 +71,13 @@ public class ApplicationConfig extends AbstractConfig {
     // directory for saving thread dump
     private String dumpDirectory;
 
+    // whether to enable qos or not
     private Boolean qosEnable;
 
+    // the qos port to listen
     private Integer qosPort;
 
+    // should we accept foreign ip or not?
     private Boolean qosAcceptForeignIp;
 
     // customized parameters
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
index 30558cc..6206048 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
@@ -15,58 +15,58 @@
     </xsd:annotation>
 
     <xsd:complexType name="abstractMethodType">
-        <xsd:attribute name="timeout" type="xsd:string" use="optional" default="0">
+        <xsd:attribute name="timeout" type="xsd:string" default="0">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method invoke timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="retries" type="xsd:string" use="optional">
+        <xsd:attribute name="retries" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method retry times. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="actives" type="xsd:string" use="optional">
+        <xsd:attribute name="actives" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The max active requests. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="connections" type="xsd:string" use="optional">
+        <xsd:attribute name="connections" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ The exclusive connections. default share one connection. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="loadbalance" type="xsd:string" use="optional">
+        <xsd:attribute name="loadbalance" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method load balance. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="async" type="xsd:string" use="optional" default="false">
+        <xsd:attribute name="async" type="xsd:string" default="false">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method does async. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="sent" type="xsd:string" use="optional">
+        <xsd:attribute name="sent" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The async method return await message sent ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="mock" type="xsd:string" use="optional">
+        <xsd:attribute name="mock" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service mock implementation. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="merger" type="xsd:string" use="optional">
+        <xsd:attribute name="merger" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The multi-group result merger ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="validation" type="xsd:string" use="optional">
+        <xsd:attribute name="validation" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service jsr303 validation, true/false. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="cache" type="xsd:string" use="optional">
+        <xsd:attribute name="cache" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service cache, lru/threadlocal/jcache. ]]></xsd:documentation>
             </xsd:annotation>
@@ -81,82 +81,82 @@
                         <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="local" type="xsd:string" use="optional">
+                <xsd:attribute name="local" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use service local implementation. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="stub" type="xsd:string" use="optional">
+                <xsd:attribute name="stub" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use service local implementation. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="proxy" type="xsd:string" use="optional">
+                <xsd:attribute name="proxy" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use proxy factory. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="cluster" type="xsd:string" use="optional">
+                <xsd:attribute name="cluster" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use cluster strategy. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="filter" type="xsd:string" use="optional">
+                <xsd:attribute name="filter" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The filter. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="listener" type="xsd:string" use="optional">
+                <xsd:attribute name="listener" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The listener. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="owner" type="xsd:string" use="optional">
+                <xsd:attribute name="owner" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The owner. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="layer" type="xsd:string" use="optional">
+                <xsd:attribute name="layer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ layer info. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="application" type="xsd:string" use="optional">
+                <xsd:attribute name="application" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service application. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="module" type="xsd:string" use="optional">
+                <xsd:attribute name="module" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service module. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="registry" type="xsd:string" use="optional">
+                <xsd:attribute name="registry" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service registry. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="monitor" type="xsd:string" use="optional">
+                <xsd:attribute name="monitor" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service monitor. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="callbacks" type="xsd:string" use="optional">
+                <xsd:attribute name="callbacks" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The callback instance limit peer connection.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="onconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service client connected. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="ondisconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="ondisconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service client disconnected. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="scope" type="xsd:string" use="optional">
+                <xsd:attribute name="scope" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Defines the service visibility, choise:[local remote]. default is remote, which can be invoked by network。  ]]></xsd:documentation>
@@ -169,49 +169,49 @@
     <xsd:complexType name="abstractReferenceType">
         <xsd:complexContent>
             <xsd:extension base="abstractInterfaceType">
-                <xsd:attribute name="version" type="xsd:string" use="optional" default="0.0.0">
+                <xsd:attribute name="version" type="xsd:string" default="0.0.0">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service version. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="group" type="xsd:string" use="optional">
+                <xsd:attribute name="group" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service group. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="check" type="xsd:string" use="optional">
+                <xsd:attribute name="check" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Check dependency providers. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="init" type="xsd:string" use="optional">
+                <xsd:attribute name="init" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Eager init reference. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="generic" type="xsd:string" use="optional">
+                <xsd:attribute name="generic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Generic service. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="injvm" type="xsd:string" use="optional">
+                <xsd:attribute name="injvm" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[Deprecated. Replace to  set scope=local ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="sticky" type="xsd:string" use="optional">
+                <xsd:attribute name="sticky" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Enable/Disable cluster sticky policy.Default false ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="reconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="reconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ remoting reconnect timer. false represent close reconnect. integer represent interval(ms) .default true(2000ms).]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="lazy" type="xsd:string" use="optional">
+                <xsd:attribute name="lazy" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ lazy create connection. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -223,86 +223,86 @@
     <xsd:complexType name="abstractServiceType">
         <xsd:complexContent>
             <xsd:extension base="abstractInterfaceType">
-                <xsd:attribute name="register" type="xsd:string" use="optional">
+                <xsd:attribute name="register" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service can be register to registry. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="version" type="xsd:string" use="optional" default="0.0.0">
+                <xsd:attribute name="version" type="xsd:string" default="0.0.0">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service version. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="group" type="xsd:string" use="optional">
+                <xsd:attribute name="group" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service group. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="deprecated" type="xsd:string" use="optional">
+                <xsd:attribute name="deprecated" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ whether the service is deprecated. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="delay" type="xsd:string" use="optional" default="0">
+                <xsd:attribute name="delay" type="xsd:string" default="0">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service export delay millisecond. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="export" type="xsd:string" use="optional">
+                <xsd:attribute name="export" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service is export. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="weight" type="xsd:string" use="optional">
+                <xsd:attribute name="weight" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service weight. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="document" type="xsd:string" use="optional">
+                <xsd:attribute name="document" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service document. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dynamic" type="xsd:string" use="optional">
+                <xsd:attribute name="dynamic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ the service registered to the registry is dynamic(true) or static(false). ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="token" type="xsd:string" use="optional">
+                <xsd:attribute name="token" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service use token. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="accesslog" type="xsd:string" use="optional">
+                <xsd:attribute name="accesslog" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service use accesslog. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="executes" type="xsd:string" use="optional">
+                <xsd:attribute name="executes" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service allow execute requests. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="protocol" type="xsd:string" use="optional">
+                <xsd:attribute name="protocol" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="warmup" type="xsd:string" use="optional">
+                <xsd:attribute name="warmup" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The warmup time in Milliseconds. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="serialization" type="xsd:string" use="optional">
+                <xsd:attribute name="serialization" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The serialization protocol of service. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -361,17 +361,17 @@
                 <xsd:documentation><![CDATA[ The application logger. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="registry" type="xsd:string" use="optional">
+        <xsd:attribute name="registry" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The application registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="monitor" type="xsd:string" use="optional">
+        <xsd:attribute name="monitor" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The application monitor. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -404,17 +404,17 @@
                 <xsd:documentation><![CDATA[ The module organization. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="registry" type="xsd:string" use="optional">
+        <xsd:attribute name="registry" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The module registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="monitor" type="xsd:string" use="optional">
+        <xsd:attribute name="monitor" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The module monitor. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -430,110 +430,110 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="address" type="xsd:string" use="optional">
+        <xsd:attribute name="address" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry address. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="port" type="xsd:string" use="optional">
+        <xsd:attribute name="port" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry default port. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="protocol" type="xsd:string" use="optional">
+        <xsd:attribute name="protocol" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry lookup protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="username" type="xsd:string" use="optional">
+        <xsd:attribute name="username" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry username. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="password" type="xsd:string" use="optional">
+        <xsd:attribute name="password" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry password. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transport" type="xsd:string" use="optional">
+        <xsd:attribute name="transport" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transporter" type="xsd:string" use="optional">
+        <xsd:attribute name="transporter" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="server" type="xsd:string" use="optional">
+        <xsd:attribute name="server" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="client" type="xsd:string" use="optional">
+        <xsd:attribute name="client" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="cluster" type="xsd:string" use="optional">
+        <xsd:attribute name="cluster" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry cluster type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="group" type="xsd:string" use="optional">
+        <xsd:attribute name="group" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry group. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="version" type="xsd:string" use="optional">
+        <xsd:attribute name="version" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry version. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="timeout" type="xsd:string" use="optional">
+        <xsd:attribute name="timeout" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The request timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="session" type="xsd:string" use="optional">
+        <xsd:attribute name="session" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The session timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="file" type="xsd:string" use="optional">
+        <xsd:attribute name="file" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry adddress file store. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="wait" type="xsd:string" use="optional">
+        <xsd:attribute name="wait" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The wait time for shutdown. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="check" type="xsd:string" use="optional">
+        <xsd:attribute name="check" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Check registry status on stratup. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dynamic" type="xsd:string" use="optional">
+        <xsd:attribute name="dynamic" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ the service registered to this registry is dynamic(true) or static(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="register" type="xsd:string" use="optional">
+        <xsd:attribute name="register" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ register service to this registry(true) or not(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="subscribe" type="xsd:string" use="optional">
+        <xsd:attribute name="subscribe" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ subscribe service to this registry(true) or not(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -544,42 +544,42 @@
         <xsd:sequence minOccurs="0" maxOccurs="unbounded">
             <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
-        <xsd:attribute name="address" type="xsd:string" use="optional">
+        <xsd:attribute name="address" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor address. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="protocol" type="xsd:string" use="optional">
+        <xsd:attribute name="protocol" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="username" type="xsd:string" use="optional">
+        <xsd:attribute name="username" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor username. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="password" type="xsd:string" use="optional">
+        <xsd:attribute name="password" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor password. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="group" type="xsd:string" use="optional">
+        <xsd:attribute name="group" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor group. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="version" type="xsd:string" use="optional">
+        <xsd:attribute name="version" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor version. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="interval" type="xsd:string" use="optional">
+        <xsd:attribute name="interval" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor interval. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -597,7 +597,7 @@
                 <xsd:documentation><![CDATA[ The parameter value. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="hide" type="xsd:boolean" use="optional">
+        <xsd:attribute name="hide" type="xsd:boolean">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Hide parameter. ]]></xsd:documentation>
             </xsd:annotation>
@@ -616,54 +616,54 @@
                         <xsd:documentation><![CDATA[ The method name (method.toString()). ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="executes" type="xsd:string" use="optional">
+                <xsd:attribute name="executes" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The max active requests. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="stat" type="xsd:string" use="optional" default="-1">
+                <xsd:attribute name="stat" type="xsd:string" default="-1">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The method parameter index for statistics. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="retry" type="xsd:string" use="optional">
+                <xsd:attribute name="retry" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to retries. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="reliable" type="xsd:string" use="optional" default="false">
+                <xsd:attribute name="reliable" type="xsd:string" default="false">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to napoli protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="deprecated" type="xsd:string" use="optional">
+                <xsd:attribute name="deprecated" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The method deprecated. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="sticky" type="xsd:string" use="optional">
+                <xsd:attribute name="sticky" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Enable/Disable cluster sticky policy.Default false ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="return" type="xsd:string" use="optional">
+                <xsd:attribute name="return" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Method result is return. default is true.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="oninvoke" type="xsd:string" use="optional">
+                <xsd:attribute name="oninvoke" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Method invoke trigger.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onreturn" type="xsd:string" use="optional">
+                <xsd:attribute name="onreturn" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Method return trigger. return attribute must be true.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onthrow" type="xsd:string" use="optional">
+                <xsd:attribute name="onthrow" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Method on error trigger.return attribute must be true.]]></xsd:documentation>
@@ -674,17 +674,17 @@
     </xsd:complexType>
 
     <xsd:complexType name="argumentType">
-        <xsd:attribute name="index" type="xsd:string" use="optional">
+        <xsd:attribute name="index" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument index. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="type" type="xsd:string" use="optional">
+        <xsd:attribute name="type" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="callback" type="xsd:string" use="optional">
+        <xsd:attribute name="callback" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument is callback. ]]></xsd:documentation>
             </xsd:annotation>
@@ -698,32 +698,32 @@
                     <xsd:element ref="reference" minOccurs="0" maxOccurs="unbounded"/>
                     <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
                 </xsd:sequence>
-                <xsd:attribute name="default" type="xsd:string" use="optional">
+                <xsd:attribute name="default" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Transporter layer framework: netty mina.... ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+                <xsd:attribute name="threadpool" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Consumer threadpool: cached, fixed, limited, eager]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="corethreads" type="xsd:string" use="optional">
+                <xsd:attribute name="corethreads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool core threads size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threads" type="xsd:string" use="optional">
+                <xsd:attribute name="threads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="queues" type="xsd:string" use="optional">
+                <xsd:attribute name="queues" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -750,22 +750,22 @@
                         </xsd:appinfo>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="url" type="xsd:string" use="optional">
+                <xsd:attribute name="url" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Provider list url. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Protocol transport client type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="consumer" type="xsd:string" use="optional">
+                <xsd:attribute name="consumer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to reference-default. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="protocol" type="xsd:string" use="optional">
+                <xsd:attribute name="protocol" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service protocol. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -784,163 +784,168 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="name" type="xsd:string" use="optional">
+        <xsd:attribute name="name" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol name. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="host" type="xsd:string" use="optional">
+        <xsd:attribute name="host" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The service host. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="port" type="xsd:string" use="optional">
+        <xsd:attribute name="port" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The service port. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+        <xsd:attribute name="threadpool" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="threads" type="xsd:string" use="optional">
+        <xsd:attribute name="threads" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="iothreads" type="xsd:string" use="optional">
+        <xsd:attribute name="corethreads" type="xsd:string">
+            <xsd:annotation>
+                <xsd:documentation><![CDATA[ The thread pool core threads size. ]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="iothreads" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The IO thread pool size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="queues" type="xsd:string" use="optional">
+        <xsd:attribute name="queues" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="accepts" type="xsd:string" use="optional">
+        <xsd:attribute name="accepts" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The accept connection size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="codec" type="xsd:string" use="optional">
+        <xsd:attribute name="codec" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol codec. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="serialization" type="xsd:string" use="optional">
+        <xsd:attribute name="serialization" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol serialization. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="keepalive" type="xsd:boolean" use="optional">
+        <xsd:attribute name="keepalive" type="xsd:boolean">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol keepAlive. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="optimizer" type="xsd:string" use="optional">
+        <xsd:attribute name="optimizer" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The serialization optimizer. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="extension" type="xsd:string" use="optional">
+        <xsd:attribute name="extension" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The extension for protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="charset" type="xsd:string" use="optional">
+        <xsd:attribute name="charset" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol charset. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="payload" type="xsd:string" use="optional">
+        <xsd:attribute name="payload" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The max payload. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="buffer" type="xsd:string" use="optional">
+        <xsd:attribute name="buffer" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The buffer size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="heartbeat" type="xsd:string" use="optional">
+        <xsd:attribute name="heartbeat" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The heartbeat interval.(ms) ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="accesslog" type="xsd:string" use="optional">
+        <xsd:attribute name="accesslog" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol use accesslog. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="telnet" type="xsd:string" use="optional">
+        <xsd:attribute name="telnet" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol use telnet commands. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="prompt" type="xsd:string" use="optional">
+        <xsd:attribute name="prompt" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol telnet prompt. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="status" type="xsd:string" use="optional">
+        <xsd:attribute name="status" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol check status. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transporter" type="xsd:string" use="optional">
+        <xsd:attribute name="transporter" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="exchanger" type="xsd:string" use="optional">
+        <xsd:attribute name="exchanger" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol exchanger type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dispather" type="xsd:string" use="optional">
+        <xsd:attribute name="dispather" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Deprecated. replace to "dispatcher". ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dispatcher" type="xsd:string" use="optional">
+        <xsd:attribute name="dispatcher" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol dispatcher type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="networker" type="xsd:string" use="optional">
+        <xsd:attribute name="networker" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol "networker" type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="server" type="xsd:string" use="optional">
+        <xsd:attribute name="server" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="client" type="xsd:string" use="optional">
+        <xsd:attribute name="client" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="path" type="xsd:string" use="optional">
+        <xsd:attribute name="path" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ The protocol context path. replace to "contextpath". ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="contextpath" type="xsd:string" use="optional">
+        <xsd:attribute name="contextpath" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol context path. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="register" type="xsd:string" use="optional">
+        <xsd:attribute name="register" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol can be register to registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -955,128 +960,128 @@
                     <xsd:element ref="service" minOccurs="0" maxOccurs="unbounded"/>
                     <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
                 </xsd:choice>
-                <xsd:attribute name="host" type="xsd:string" use="optional">
+                <xsd:attribute name="host" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service host. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="port" type="xsd:string" use="optional">
+                <xsd:attribute name="port" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service port. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+                <xsd:attribute name="threadpool" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threads" type="xsd:string" use="optional">
+                <xsd:attribute name="threads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="iothreads" type="xsd:string" use="optional">
+                <xsd:attribute name="iothreads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The IO thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="queues" type="xsd:string" use="optional">
+                <xsd:attribute name="queues" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="accepts" type="xsd:string" use="optional">
+                <xsd:attribute name="accepts" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The accept connection size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="codec" type="xsd:string" use="optional">
+                <xsd:attribute name="codec" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol codec. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="charset" type="xsd:string" use="optional">
+                <xsd:attribute name="charset" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol charset. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="payload" type="xsd:string" use="optional">
+                <xsd:attribute name="payload" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The max payload. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="buffer" type="xsd:string" use="optional">
+                <xsd:attribute name="buffer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The buffer size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="transporter" type="xsd:string" use="optional">
+                <xsd:attribute name="transporter" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="exchanger" type="xsd:string" use="optional">
+                <xsd:attribute name="exchanger" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol exchanger type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dispather" type="xsd:string" use="optional">
+                <xsd:attribute name="dispather" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. replace to "dispatcher". ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dispatcher" type="xsd:string" use="optional">
+                <xsd:attribute name="dispatcher" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol dispatcher type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="networker" type="xsd:string" use="optional">
+                <xsd:attribute name="networker" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol "networker" type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="server" type="xsd:string" use="optional">
+                <xsd:attribute name="server" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="telnet" type="xsd:string" use="optional">
+                <xsd:attribute name="telnet" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol use telnet commands. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="prompt" type="xsd:string" use="optional">
+                <xsd:attribute name="prompt" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol telnet prompt. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="status" type="xsd:string" use="optional">
+                <xsd:attribute name="status" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol check status. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="path" type="xsd:string" use="optional">
+                <xsd:attribute name="path" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The protocol context path. replace to "contextpath". ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="contextpath" type="xsd:string" use="optional">
+                <xsd:attribute name="contextpath" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol context path. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="wait" type="xsd:string" use="optional">
+                <xsd:attribute name="wait" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The provider shutdown wait time. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="default" type="xsd:string" use="optional">
+                <xsd:attribute name="default" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -1105,28 +1110,28 @@
                         </xsd:appinfo>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="ref" type="xsd:string" use="optional">
+                <xsd:attribute name="ref" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service implementation instance bean id. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="class" type="xsd:string" use="optional">
+                <xsd:attribute name="class" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service implementation class name. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="path" type="xsd:string" use="optional">
+                <xsd:attribute name="path" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service path. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="provider" type="xsd:string" use="optional">
+                <xsd:attribute name="provider" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="generic" type="xsd:string" use="optional">
+                <xsd:attribute name="generic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Generic service. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -1142,7 +1147,7 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="package" type="xsd:string" use="optional">
+        <xsd:attribute name="package" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The scan package. ]]></xsd:documentation>
             </xsd:annotation>
@@ -1288,4 +1293,4 @@
         </xsd:annotation>
     </xsd:element>
 
-</xsd:schema>
+</xsd:schema>
\ No newline at end of file
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index adaa936..ecf7d7b 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -15,58 +15,58 @@
     </xsd:annotation>
 
     <xsd:complexType name="abstractMethodType">
-        <xsd:attribute name="timeout" type="xsd:string" use="optional" default="0">
+        <xsd:attribute name="timeout" type="xsd:string" default="0">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method invoke timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="retries" type="xsd:string" use="optional">
+        <xsd:attribute name="retries" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method retry times. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="actives" type="xsd:string" use="optional">
+        <xsd:attribute name="actives" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The max active requests. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="connections" type="xsd:string" use="optional">
+        <xsd:attribute name="connections" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ The exclusive connections. default share one connection. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="loadbalance" type="xsd:string" use="optional">
+        <xsd:attribute name="loadbalance" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method load balance. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="async" type="xsd:string" use="optional" default="false">
+        <xsd:attribute name="async" type="xsd:string" default="false">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The method does async. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="sent" type="xsd:string" use="optional">
+        <xsd:attribute name="sent" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The async method return await message sent ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="mock" type="xsd:string" use="optional">
+        <xsd:attribute name="mock" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service mock implementation. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="merger" type="xsd:string" use="optional">
+        <xsd:attribute name="merger" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The multi-group result merger ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="validation" type="xsd:string" use="optional">
+        <xsd:attribute name="validation" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service jsr303 validation, true/false. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="cache" type="xsd:string" use="optional">
+        <xsd:attribute name="cache" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Use service cache, lru/threadlocal/jcache. ]]></xsd:documentation>
             </xsd:annotation>
@@ -81,82 +81,82 @@
                         <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="local" type="xsd:string" use="optional">
+                <xsd:attribute name="local" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use service local implementation. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="stub" type="xsd:string" use="optional">
+                <xsd:attribute name="stub" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use service local implementation. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="proxy" type="xsd:string" use="optional">
+                <xsd:attribute name="proxy" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use proxy factory. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="cluster" type="xsd:string" use="optional">
+                <xsd:attribute name="cluster" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Use cluster strategy. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="filter" type="xsd:string" use="optional">
+                <xsd:attribute name="filter" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The filter. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="listener" type="xsd:string" use="optional">
+                <xsd:attribute name="listener" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The listener. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="owner" type="xsd:string" use="optional">
+                <xsd:attribute name="owner" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The owner. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="layer" type="xsd:string" use="optional">
+                <xsd:attribute name="layer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ layer info. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="application" type="xsd:string" use="optional">
+                <xsd:attribute name="application" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service application. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="module" type="xsd:string" use="optional">
+                <xsd:attribute name="module" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service module. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="registry" type="xsd:string" use="optional">
+                <xsd:attribute name="registry" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service registry. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="monitor" type="xsd:string" use="optional">
+                <xsd:attribute name="monitor" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service monitor. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="callbacks" type="xsd:string" use="optional">
+                <xsd:attribute name="callbacks" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The callback instance limit peer connection.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="onconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service client connected. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="ondisconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="ondisconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service client disconnected. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="scope" type="xsd:string" use="optional">
+                <xsd:attribute name="scope" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Defines the service visibility, choise:[local remote]. default is remote, which can be invoked by network。  ]]></xsd:documentation>
@@ -169,49 +169,49 @@
     <xsd:complexType name="abstractReferenceType">
         <xsd:complexContent>
             <xsd:extension base="abstractInterfaceType">
-                <xsd:attribute name="version" type="xsd:string" use="optional" default="0.0.0">
+                <xsd:attribute name="version" type="xsd:string" default="0.0.0">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service version. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="group" type="xsd:string" use="optional">
+                <xsd:attribute name="group" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service group. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="check" type="xsd:string" use="optional">
+                <xsd:attribute name="check" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Check dependency providers. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="init" type="xsd:string" use="optional">
+                <xsd:attribute name="init" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Eager init reference. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="generic" type="xsd:string" use="optional">
+                <xsd:attribute name="generic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Generic service. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="injvm" type="xsd:string" use="optional">
+                <xsd:attribute name="injvm" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[Deprecated. Replace to  set scope=local ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="sticky" type="xsd:string" use="optional">
+                <xsd:attribute name="sticky" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Enable/Disable cluster sticky policy.Default false ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="reconnect" type="xsd:string" use="optional">
+                <xsd:attribute name="reconnect" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ remoting reconnect timer. false represent close reconnect. integer represent interval(ms) .default true(2000ms).]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="lazy" type="xsd:string" use="optional">
+                <xsd:attribute name="lazy" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ lazy create connection. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -223,86 +223,86 @@
     <xsd:complexType name="abstractServiceType">
         <xsd:complexContent>
             <xsd:extension base="abstractInterfaceType">
-                <xsd:attribute name="register" type="xsd:string" use="optional">
+                <xsd:attribute name="register" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service can be register to registry. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="version" type="xsd:string" use="optional" default="0.0.0">
+                <xsd:attribute name="version" type="xsd:string" default="0.0.0">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service version. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="group" type="xsd:string" use="optional">
+                <xsd:attribute name="group" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service group. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="deprecated" type="xsd:string" use="optional">
+                <xsd:attribute name="deprecated" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ whether the service is deprecated. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="delay" type="xsd:string" use="optional" default="0">
+                <xsd:attribute name="delay" type="xsd:string" default="0">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service export delay millisecond. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="export" type="xsd:string" use="optional">
+                <xsd:attribute name="export" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service is export. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="weight" type="xsd:string" use="optional">
+                <xsd:attribute name="weight" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service weight. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="document" type="xsd:string" use="optional">
+                <xsd:attribute name="document" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service document. ]]>
                         </xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dynamic" type="xsd:string" use="optional">
+                <xsd:attribute name="dynamic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ the service registered to the registry is dynamic(true) or static(false). ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="token" type="xsd:string" use="optional">
+                <xsd:attribute name="token" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service use token. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="accesslog" type="xsd:string" use="optional">
+                <xsd:attribute name="accesslog" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service use accesslog. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="executes" type="xsd:string" use="optional">
+                <xsd:attribute name="executes" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service allow execute requests. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="protocol" type="xsd:string" use="optional">
+                <xsd:attribute name="protocol" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="warmup" type="xsd:string" use="optional">
+                <xsd:attribute name="warmup" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The warmup time in Milliseconds. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="serialization" type="xsd:string" use="optional">
+                <xsd:attribute name="serialization" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The serialization protocol of service. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -361,17 +361,17 @@
                 <xsd:documentation><![CDATA[ The application logger. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="registry" type="xsd:string" use="optional">
+        <xsd:attribute name="registry" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The application registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="monitor" type="xsd:string" use="optional">
+        <xsd:attribute name="monitor" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The application monitor. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -404,17 +404,17 @@
                 <xsd:documentation><![CDATA[ The module organization. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="registry" type="xsd:string" use="optional">
+        <xsd:attribute name="registry" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The module registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="monitor" type="xsd:string" use="optional">
+        <xsd:attribute name="monitor" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The module monitor. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -430,110 +430,110 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="address" type="xsd:string" use="optional">
+        <xsd:attribute name="address" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry address. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="port" type="xsd:string" use="optional">
+        <xsd:attribute name="port" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry default port. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="protocol" type="xsd:string" use="optional">
+        <xsd:attribute name="protocol" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry lookup protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="username" type="xsd:string" use="optional">
+        <xsd:attribute name="username" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry username. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="password" type="xsd:string" use="optional">
+        <xsd:attribute name="password" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry password. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transport" type="xsd:string" use="optional">
+        <xsd:attribute name="transport" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transporter" type="xsd:string" use="optional">
+        <xsd:attribute name="transporter" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="server" type="xsd:string" use="optional">
+        <xsd:attribute name="server" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="client" type="xsd:string" use="optional">
+        <xsd:attribute name="client" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="cluster" type="xsd:string" use="optional">
+        <xsd:attribute name="cluster" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry cluster type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="group" type="xsd:string" use="optional">
+        <xsd:attribute name="group" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry group. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="version" type="xsd:string" use="optional">
+        <xsd:attribute name="version" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry version. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="timeout" type="xsd:string" use="optional">
+        <xsd:attribute name="timeout" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The request timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="session" type="xsd:string" use="optional">
+        <xsd:attribute name="session" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The session timeout. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="file" type="xsd:string" use="optional">
+        <xsd:attribute name="file" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The registry adddress file store. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="wait" type="xsd:string" use="optional">
+        <xsd:attribute name="wait" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The wait time for shutdown. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="check" type="xsd:string" use="optional">
+        <xsd:attribute name="check" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Check registry status on stratup. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dynamic" type="xsd:string" use="optional">
+        <xsd:attribute name="dynamic" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ the service registered to this registry is dynamic(true) or static(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="register" type="xsd:string" use="optional">
+        <xsd:attribute name="register" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ register service to this registry(true) or not(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="subscribe" type="xsd:string" use="optional">
+        <xsd:attribute name="subscribe" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ subscribe service to this registry(true) or not(false). ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -544,42 +544,42 @@
         <xsd:sequence minOccurs="0" maxOccurs="unbounded">
             <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
-        <xsd:attribute name="address" type="xsd:string" use="optional">
+        <xsd:attribute name="address" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor address. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="protocol" type="xsd:string" use="optional">
+        <xsd:attribute name="protocol" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="username" type="xsd:string" use="optional">
+        <xsd:attribute name="username" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor username. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="password" type="xsd:string" use="optional">
+        <xsd:attribute name="password" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor password. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="group" type="xsd:string" use="optional">
+        <xsd:attribute name="group" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor group. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="version" type="xsd:string" use="optional">
+        <xsd:attribute name="version" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor version. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="interval" type="xsd:string" use="optional">
+        <xsd:attribute name="interval" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The monitor interval. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -597,7 +597,7 @@
                 <xsd:documentation><![CDATA[ The parameter value. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="hide" type="xsd:boolean" use="optional">
+        <xsd:attribute name="hide" type="xsd:boolean">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Hide parameter. ]]></xsd:documentation>
             </xsd:annotation>
@@ -616,54 +616,54 @@
                         <xsd:documentation><![CDATA[ The method name (method.toString()). ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="executes" type="xsd:string" use="optional">
+                <xsd:attribute name="executes" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The max active requests. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="stat" type="xsd:string" use="optional" default="-1">
+                <xsd:attribute name="stat" type="xsd:string" default="-1">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The method parameter index for statistics. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="retry" type="xsd:string" use="optional">
+                <xsd:attribute name="retry" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to retries. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="reliable" type="xsd:string" use="optional" default="false">
+                <xsd:attribute name="reliable" type="xsd:string" default="false">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to napoli protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="deprecated" type="xsd:string" use="optional">
+                <xsd:attribute name="deprecated" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The method deprecated. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="sticky" type="xsd:string" use="optional">
+                <xsd:attribute name="sticky" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Enable/Disable cluster sticky policy.Default false ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="return" type="xsd:string" use="optional">
+                <xsd:attribute name="return" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Method result is return. default is true.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="oninvoke" type="xsd:string" use="optional">
+                <xsd:attribute name="oninvoke" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Method invoke trigger.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onreturn" type="xsd:string" use="optional">
+                <xsd:attribute name="onreturn" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Method return trigger. return attribute must be true.]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="onthrow" type="xsd:string" use="optional">
+                <xsd:attribute name="onthrow" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ Method on error trigger.return attribute must be true.]]></xsd:documentation>
@@ -674,17 +674,17 @@
     </xsd:complexType>
 
     <xsd:complexType name="argumentType">
-        <xsd:attribute name="index" type="xsd:string" use="optional">
+        <xsd:attribute name="index" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument index. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="type" type="xsd:string" use="optional">
+        <xsd:attribute name="type" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="callback" type="xsd:string" use="optional">
+        <xsd:attribute name="callback" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The argument is callback. ]]></xsd:documentation>
             </xsd:annotation>
@@ -698,32 +698,32 @@
                     <xsd:element ref="reference" minOccurs="0" maxOccurs="unbounded"/>
                     <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
                 </xsd:sequence>
-                <xsd:attribute name="default" type="xsd:string" use="optional">
+                <xsd:attribute name="default" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Transporter layer framework: netty mina.... ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+                <xsd:attribute name="threadpool" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Consumer threadpool: cached, fixed, limited, eager]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="corethreads" type="xsd:string" use="optional">
+                <xsd:attribute name="corethreads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool core threads size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threads" type="xsd:string" use="optional">
+                <xsd:attribute name="threads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="queues" type="xsd:string" use="optional">
+                <xsd:attribute name="queues" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -750,22 +750,22 @@
                         </xsd:appinfo>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="url" type="xsd:string" use="optional">
+                <xsd:attribute name="url" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Provider list url. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Protocol transport client type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="consumer" type="xsd:string" use="optional">
+                <xsd:attribute name="consumer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to reference-default. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="protocol" type="xsd:string" use="optional">
+                <xsd:attribute name="protocol" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service protocol. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -784,168 +784,168 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="name" type="xsd:string" use="optional">
+        <xsd:attribute name="name" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol name. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="host" type="xsd:string" use="optional">
+        <xsd:attribute name="host" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The service host. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="port" type="xsd:string" use="optional">
+        <xsd:attribute name="port" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The service port. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+        <xsd:attribute name="threadpool" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="threads" type="xsd:string" use="optional">
+        <xsd:attribute name="threads" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="corethreads" type="xsd:string" use="optional">
+        <xsd:attribute name="corethreads" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool core threads size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="iothreads" type="xsd:string" use="optional">
+        <xsd:attribute name="iothreads" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The IO thread pool size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="queues" type="xsd:string" use="optional">
+        <xsd:attribute name="queues" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="accepts" type="xsd:string" use="optional">
+        <xsd:attribute name="accepts" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The accept connection size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="codec" type="xsd:string" use="optional">
+        <xsd:attribute name="codec" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol codec. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="serialization" type="xsd:string" use="optional">
+        <xsd:attribute name="serialization" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol serialization. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="keepalive" type="xsd:boolean" use="optional">
+        <xsd:attribute name="keepalive" type="xsd:boolean">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol keepAlive. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="optimizer" type="xsd:string" use="optional">
+        <xsd:attribute name="optimizer" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The serialization optimizer. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="extension" type="xsd:string" use="optional">
+        <xsd:attribute name="extension" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The extension for protocol. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="charset" type="xsd:string" use="optional">
+        <xsd:attribute name="charset" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol charset. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="payload" type="xsd:string" use="optional">
+        <xsd:attribute name="payload" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The max payload. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="buffer" type="xsd:string" use="optional">
+        <xsd:attribute name="buffer" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The buffer size. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="heartbeat" type="xsd:string" use="optional">
+        <xsd:attribute name="heartbeat" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The heartbeat interval.(ms) ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="accesslog" type="xsd:string" use="optional">
+        <xsd:attribute name="accesslog" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol use accesslog. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="telnet" type="xsd:string" use="optional">
+        <xsd:attribute name="telnet" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol use telnet commands. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="prompt" type="xsd:string" use="optional">
+        <xsd:attribute name="prompt" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol telnet prompt. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="status" type="xsd:string" use="optional">
+        <xsd:attribute name="status" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol check status. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="transporter" type="xsd:string" use="optional">
+        <xsd:attribute name="transporter" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="exchanger" type="xsd:string" use="optional">
+        <xsd:attribute name="exchanger" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol exchanger type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dispather" type="xsd:string" use="optional">
+        <xsd:attribute name="dispather" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Deprecated. replace to "dispatcher". ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="dispatcher" type="xsd:string" use="optional">
+        <xsd:attribute name="dispatcher" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol dispatcher type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="networker" type="xsd:string" use="optional">
+        <xsd:attribute name="networker" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol "networker" type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="server" type="xsd:string" use="optional">
+        <xsd:attribute name="server" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="client" type="xsd:string" use="optional">
+        <xsd:attribute name="client" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="path" type="xsd:string" use="optional">
+        <xsd:attribute name="path" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation>
                     <![CDATA[ The protocol context path. replace to "contextpath". ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="contextpath" type="xsd:string" use="optional">
+        <xsd:attribute name="contextpath" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol context path. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="register" type="xsd:string" use="optional">
+        <xsd:attribute name="register" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The protocol can be register to registry. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="default" type="xsd:string" use="optional">
+        <xsd:attribute name="default" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
             </xsd:annotation>
@@ -960,128 +960,128 @@
                     <xsd:element ref="service" minOccurs="0" maxOccurs="unbounded"/>
                     <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
                 </xsd:choice>
-                <xsd:attribute name="host" type="xsd:string" use="optional">
+                <xsd:attribute name="host" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service host. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="port" type="xsd:string" use="optional">
+                <xsd:attribute name="port" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service port. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threadpool" type="xsd:string" use="optional">
+                <xsd:attribute name="threadpool" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="threads" type="xsd:string" use="optional">
+                <xsd:attribute name="threads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="iothreads" type="xsd:string" use="optional">
+                <xsd:attribute name="iothreads" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The IO thread pool size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="queues" type="xsd:string" use="optional">
+                <xsd:attribute name="queues" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The thread pool queue size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="accepts" type="xsd:string" use="optional">
+                <xsd:attribute name="accepts" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The accept connection size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="codec" type="xsd:string" use="optional">
+                <xsd:attribute name="codec" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol codec. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="charset" type="xsd:string" use="optional">
+                <xsd:attribute name="charset" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol charset. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="payload" type="xsd:string" use="optional">
+                <xsd:attribute name="payload" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The max payload. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="buffer" type="xsd:string" use="optional">
+                <xsd:attribute name="buffer" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The buffer size. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="transporter" type="xsd:string" use="optional">
+                <xsd:attribute name="transporter" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol transporter type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="exchanger" type="xsd:string" use="optional">
+                <xsd:attribute name="exchanger" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol exchanger type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dispather" type="xsd:string" use="optional">
+                <xsd:attribute name="dispather" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. replace to "dispatcher". ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="dispatcher" type="xsd:string" use="optional">
+                <xsd:attribute name="dispatcher" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol dispatcher type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="networker" type="xsd:string" use="optional">
+                <xsd:attribute name="networker" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol "networker" type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="server" type="xsd:string" use="optional">
+                <xsd:attribute name="server" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol server type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="client" type="xsd:string" use="optional">
+                <xsd:attribute name="client" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol client type. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="telnet" type="xsd:string" use="optional">
+                <xsd:attribute name="telnet" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol use telnet commands. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="prompt" type="xsd:string" use="optional">
+                <xsd:attribute name="prompt" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol telnet prompt. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="status" type="xsd:string" use="optional">
+                <xsd:attribute name="status" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol check status. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="path" type="xsd:string" use="optional">
+                <xsd:attribute name="path" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The protocol context path. replace to "contextpath". ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="contextpath" type="xsd:string" use="optional">
+                <xsd:attribute name="contextpath" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The protocol context path. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="wait" type="xsd:string" use="optional">
+                <xsd:attribute name="wait" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The provider shutdown wait time. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="default" type="xsd:string" use="optional">
+                <xsd:attribute name="default" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Is default. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -1110,28 +1110,28 @@
                         </xsd:appinfo>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="ref" type="xsd:string" use="optional">
+                <xsd:attribute name="ref" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation>
                             <![CDATA[ The service implementation instance bean id. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="class" type="xsd:string" use="optional">
+                <xsd:attribute name="class" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service implementation class name. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="path" type="xsd:string" use="optional">
+                <xsd:attribute name="path" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ The service path. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="provider" type="xsd:string" use="optional">
+                <xsd:attribute name="provider" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Deprecated. Replace to protocol. ]]></xsd:documentation>
                     </xsd:annotation>
                 </xsd:attribute>
-                <xsd:attribute name="generic" type="xsd:string" use="optional">
+                <xsd:attribute name="generic" type="xsd:string">
                     <xsd:annotation>
                         <xsd:documentation><![CDATA[ Generic service. ]]></xsd:documentation>
                     </xsd:annotation>
@@ -1147,7 +1147,7 @@
                 <xsd:documentation><![CDATA[ The unique identifier for a bean. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="package" type="xsd:string" use="optional">
+        <xsd:attribute name="package" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ The scan package. ]]></xsd:documentation>
             </xsd:annotation>
diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java
index 681f522..5c83ab0 100644
--- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java
+++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java
@@ -18,6 +18,9 @@ package org.apache.dubbo.qos.protocol;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.qos.common.QosConstants;
 import org.apache.dubbo.qos.server.Server;
 import org.apache.dubbo.rpc.Exporter;
 import org.apache.dubbo.rpc.Invoker;
@@ -30,7 +33,11 @@ import static org.apache.dubbo.common.Constants.ACCEPT_FOREIGN_IP;
 import static org.apache.dubbo.common.Constants.QOS_ENABLE;
 import static org.apache.dubbo.common.Constants.QOS_PORT;
 
+
 public class QosProtocolWrapper implements Protocol {
+
+    private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class);
+
     private static AtomicBoolean hasStarted = new AtomicBoolean(false);
 
     private Protocol protocol;
@@ -76,20 +83,23 @@ public class QosProtocolWrapper implements Protocol {
         }
 
         try {
-            boolean qosEnable = Boolean.parseBoolean(url.getParameter(QOS_ENABLE,"true"));
+            boolean qosEnable = url.getParameter(QOS_ENABLE,true);
             if (!qosEnable) {
+                logger.info("qos won't be started because it is disabled. " +
+                        "Please check dubbo.application.qos.enable is configured either in system property, " +
+                        "dubbo.properties or XML/spring-boot configuration.");
                 return;
             }
 
-            int port = Integer.parseInt(url.getParameter(QOS_PORT,"22222"));
-            boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"true"));
+            int port = url.getParameter(QOS_PORT, QosConstants.DEFAULT_PORT);
+            boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"false"));
             Server server = Server.getInstance();
             server.setPort(port);
             server.setAcceptForeignIp(acceptForeignIp);
             server.start();
 
         } catch (Throwable throwable) {
-            //throw new RpcException("fail to start qos server", throwable);
+            logger.warn("Fail to start qos server: ", throwable);
         }
     }
 
diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java
index 85851cc..1ac65d4 100644
--- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java
+++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java
@@ -42,9 +42,9 @@ public class QosProtocolWrapperTest {
 
     @Before
     public void setUp() throws Exception {
-        when(url.getParameter(Constants.QOS_ENABLE, "true")).thenReturn("true");
-        when(url.getParameter(Constants.QOS_PORT, "22222")).thenReturn("12345");
-        when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, "true")).thenReturn("false");
+        when(url.getParameter(Constants.QOS_ENABLE, true)).thenReturn(true);
+        when(url.getParameter(Constants.QOS_PORT, 22222)).thenReturn(12345);
+        when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, true)).thenReturn(false);
         when(invoker.getUrl()).thenReturn(url);
         when(url.getProtocol()).thenReturn(Constants.REGISTRY_PROTOCOL);
     }
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index b1e4c3d..6374456 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -136,26 +136,26 @@ public class RegistryProtocol implements Protocol {
 
         //registry provider
         final Registry registry = getRegistry(originInvoker);
-        final URL registedProviderUrl = getRegistedProviderUrl(originInvoker);
+        final URL registeredProviderUrl = getRegisteredProviderUrl(originInvoker);
 
         //to judge to delay publish whether or not
-        boolean register = registedProviderUrl.getParameter("register", true);
+        boolean register = registeredProviderUrl.getParameter("register", true);
 
-        ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registedProviderUrl);
+        ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registeredProviderUrl);
 
         if (register) {
-            register(registryUrl, registedProviderUrl);
+            register(registryUrl, registeredProviderUrl);
             ProviderConsumerRegTable.getProviderWrapper(originInvoker).setReg(true);
         }
 
         // Subscribe the override data
         // FIXME When the provider subscribes, it will affect the scene : a certain JVM exposes the service and call the same service. Because the subscribed is cached key with the name of the service, it causes the subscription information to cover.
-        final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registedProviderUrl);
+        final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registeredProviderUrl);
         final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker);
         overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);
         registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);
         //Ensure that a new exporter instance is returned every time export
-        return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registedProviderUrl);
+        return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registeredProviderUrl);
     }
 
     @SuppressWarnings("unchecked")
@@ -220,10 +220,10 @@ public class RegistryProtocol implements Protocol {
      * @param originInvoker
      * @return
      */
-    private URL getRegistedProviderUrl(final Invoker<?> originInvoker) {
+    private URL getRegisteredProviderUrl(final Invoker<?> originInvoker) {
         URL providerUrl = getProviderUrl(originInvoker);
         //The address you see at the registry
-        final URL registedProviderUrl = providerUrl.removeParameters(getFilteredKeys(providerUrl))
+        return providerUrl.removeParameters(getFilteredKeys(providerUrl))
                 .removeParameter(Constants.MONITOR_KEY)
                 .removeParameter(Constants.BIND_IP_KEY)
                 .removeParameter(Constants.BIND_PORT_KEY)
@@ -232,7 +232,6 @@ public class RegistryProtocol implements Protocol {
                 .removeParameter(ACCEPT_FOREIGN_IP)
                 .removeParameter(VALIDATION_KEY)
                 .removeParameter(INTERFACES);
-        return registedProviderUrl;
     }
 
     private URL getSubscribedOverrideUrl(URL registedProviderUrl) {