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 <huxing.zh...@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) {

Reply via email to