Dubbo.xml配置源-Dubbo.xsd分析
我们使用Dubbo时,一般都会使用xml配置基本信息,如项目名称(application)、注册中心(register)、协议(protocal)、服务(service),如下所示:
|
1
2
3
4
5
6
7
|
<dubbo:application name="demo-provider" owner="programmer" organization="dubbox"/><dubbo:protocol name="dubbo" serialization="kryo" optimizer="com.alibaba.dubbo.demo.SerializationOptimizerImpl"/><dubbo:service interface="com.alibaba.dubbo.demo.bid.BidService" ref="bidService" protocol="dubbo"/> |
可是大家这些xml节点都是从哪里来的,为什么dubbo启动时可以识别,为什么输入有提示,下面首先为大家介绍一下xml节点从哪里来,为什么可以自动提示?下一篇再介绍怎样处理xml内容。
一、从哪里来?
首先看xml的beans根目录的URL:http://code.alibabatech.com/schema/dubbo
|
1
2
3
4
5
6
7
8
9
10
|
<?xml version="1.0" encoding="UTF-8"?> xsi:schemaLocation=" |
为什么引入这个dubbo的url,在xml文件中就可以自动提示相应的节点信息,我们首先看dubbo源码中的和两个文件:
1、repository\com\alibaba\dubbo\2.5.3\dubbo-2.5.3\META-INF\spring.handlers
图中的代码说明了url对应的处理类

2、repository\com\alibaba\dubbo\2.5.3\dubbo-2.5.3\META-INF\spring.schemas
图中的代码说明了url对应的xsd文件

二、Dubbo.xsd的组成
第一步中解释了xml元素的来源,下一步通过分析dubbo.xsd文件解释xml元素、属性及自动提示。
dubbo.xsd主要包含以下4个类型的元素:
1、xsd:import:引入其它标签库,dubbo.xsd中还需要其它的xsd,处理方式和dubbo.xsd相同
|
1
2
3
|
|
2、xsd:annotation:xsd文件描述
|
1
2
3
|
<xsd:annotation> <xsd:documentation><![CDATA[ Namespace support for the dubbo services provided by dubbo framework. ]]></xsd:documentation> </xsd:annotation> |
3、xsd:complexType name="abstractMethodType:abstract开头的complextType:作为其它complexType类型的基类,提取共同的属性配置
这个抽象complexType只列出了前面两个参数:timeout、retries
|
1
2
3
4
5
6
7
8
9
10
11
|
<xsd:complexType name="abstractMethodType"> <xsd:attribute name="timeout" type="xsd:string" use="optional" 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:annotation> <xsd:documentation><![CDATA[ The method retry times. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> |
4、xsd:element name="service" type="serviceType:某个节点的配置,这里以service节点为例,type属性指向了具体的类型
type属性值说明具体的元素时serviceType
|
1
2
3
4
5
|
<xsd:element name="service" type="serviceType"> <xsd:annotation> <xsd:documentation><![CDATA[ Export service config ]]></xsd:documentation> </xsd:annotation> </xsd:element> |
5、xsd:complexType name="serviceType":某个节点的具体属性,第4步中type属性指向的节点,其中base属性指向集成的complexType
具体的complexType(部分),包括子元素method、parameter,基类元素abstractServiceType
|
1
2
3
4
5
6
7
8
|
<xsd:complexType name="serviceType"> <xsd:complexContent> <xsd:extension base="abstractServiceType"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="method" minOccurs="0" maxOccurs="unbounded" /> <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" /> <xsd:element ref="beans:property" minOccurs="0" maxOccurs="unbounded" /> </xsd:choice> |
三、dubbo.xml配置文件和dubbo.xsd的关系
1、示例一:protocol
|
1
2
|
<dubbo:protocolname="dubbo"port="-1"dispatcher="all"threadpool="fixed"threads="100"/> |
对应的dubbo.xsd节点

2、示例二
|
1
2
3
|
<dubbo:service interface="org.gossip.dub.facade.ISeckillService" ref="seckillService" retries="0"> <dubbo:method name="a1"></dubbo:method></dubbo:service> |

Dubbo.xml配置源-Dubbo.xsd分析的更多相关文章
- 【Dubbo源码阅读系列】之 Dubbo XML 配置加载
今天我们来谈谈 Dubbo XML 配置相关内容.关于这部分内容我打算分为以下几个部分进行介绍: Dubbo XML Spring 自定义 XML 标签解析 Dubbo 自定义 XML 标签解析 Du ...
- spring 5.x 系列第15篇 —— 整合dubbo (xml配置方式)
文章目录 一. 项目结构说明 二.项目依赖 三.公共模块(dubbo-common) 四. 服务提供者(dubbo-provider) 4.1 productService是服务的提供者( 商品数据用 ...
- Dubbo xml配置 和注解配置 写法
<?xml version="1.0" encoding="UTF-8"?><!-- - Copyright 1999-2011 Alibab ...
- dubbo高级配置学习
启动时检查 可以通过check="false"关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动. 关闭某个服务的启动时检查:(没有提供者时报错) < ...
- dubbo高级配置学习(上)
启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true. 如果你的Spring容器是懒加载的, ...
- dubbo源码分析7——dubbo的配置解析_与spring的整合
dubbo的配置其实就是建立在spring的命名空间的配置机制之上的.在dubbo的jar包的META-INF目录下会有spring.handlers这个文件,用来配置spring的命名空间和解析类的 ...
- 【原】Spring和Dubbo基于XML配置整合过程
背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个 ...
- Dubbo SPI 机制源码分析(基于2.7.7)
Dubbo SPI 机制涉及到 @SPI.@Adaptive.@Activate 三个注解,ExtensionLoader 作为 Dubbo SPI 机制的核心负责加载和管理扩展点及其实现.本文以 E ...
- 阿里巴巴Dubbo实现的源码分析
1. Dubbo概述 Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案.它的核心功能包括: #remoting ...
随机推荐
- 你的MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~
早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过? 博客园:MongoDB数据库勒索,中国受害者数量超乎你的想象,SOS! 1. 由于自己之前做过的项目,R ...
- Java如何根据IP获取当前定位
当今购物.旅游等服务型的网站如此流行,我们有时候也会碰到这样网站的开发. 在开发此类网站时,为了增加用户的体验感受,我们不得不在用户刚进入网站时定位到用户所在地, 更好的为用户推荐当地产品.比如去哪儿 ...
- Python中的各种装饰器详解
Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...
- sql 时间格式化
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...
- 解决Keras在IDE集成环境中找不到nvcc
在我们正确配置了Keras使用GPU,并在Terminal中运行一切顺利的的时候,转到Pycharm或者Eclipse中运行有可能会出现"nvcc not found on the $PAT ...
- idea中建立maven web项卡在Generating Project in Batch mode
Maven命令执行到Generating Project in Batch mode 卡住,原因是网络带宽不足问题!需要下载一个约5.1M的xml文件. Maven一般命令:mvn archetype ...
- xml-DTD相关
DTD约束既可以作为一个单独的文件,也可以在XML文件内编写. 在XML文件内编写DTD:
- Webupload + MVC 之上传下载
最近工作中用到了 MVC 的上传及下载 , 写下感受 本项目中用到的是百度的webuploader <!--引入Jquery--> <script src="~/Conte ...
- sql第三天
->完整的select语句及执行顺序(必须记住) 5...select 5.2->distinct 7...top n [percent] 5.1->列名 聚合函数(1.2-> ...
- 【Android】数据共享 sharedPreferences 相关注意事项
Android 中通过 sharedPreferences 来持久化存储数据并进行共享 在 Activity 或存在 Context 环境中即可使用 context.getSharedPreferen ...