以前跨系统访问是直接http、webservice等,近期有能使用dubbo的应用场景,特来记一下
本次会使用zookeeper来当注册中心
首先引入dubbo的依赖
1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>dubbo</artifactId> 4 <version>2.5.3</version> 5 <exclusions> 6 <exclusion> 7 <artifactId>spring</artifactId> 8 <groupId>org.springframework</groupId> 9 </exclusion> 10 </exclusions> 11 </dependency> 12 13 <dependency> 14 <groupId>org.apache.zookeeper</groupId> 15 <artifactId>zookeeper</artifactId> 16 <version>3.4.6</version> 17 <exclusions> 18 <exclusion> 19 <artifactId>netty</artifactId> 20 <groupId>io.netty</groupId> 21 </exclusion> 22 </exclusions> 23 </dependency> 24 25 <dependency> 26 <groupId>com.github.sgroschupf</groupId> 27 <artifactId>zkclient</artifactId> 28 <version>0.1</version> 29 <exclusions> 30 <exclusion> 31 <artifactId>netty</artifactId> 32 <groupId>io.netty</groupId> 33 </exclusion> 34 </exclusions> 35 </dependency>
把要准备向外部暴露的服务打包成jar(这里是接口哟,没有实现类哦,实现类是由具体暴露接口的某个系统实现),如果系统架构是直接导入包,也可以吧services的jar拷贝到lib下面也是行,就是比较麻烦而且一有改动就需要从新打包替换
暴露接口的系统引入jar,并实现接口
然后配置暴露服务器的名称信息:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 --> <dubbo:application name="supply-statisticsService"></dubbo:application> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" subscribe="false" register=""></dubbo:registry> <!-- 要暴露的服务接口 这里的接口实现肯定是要spring管理的哟 --> <dubbo:service interface="接口全限定名称(com.....)" ref="statisticsInquiryPriceOrderService" /> <dubbo:service interface="接口全限定名称(com.....)" ref="statisticsOrderService"/> </beans>
使用暴露接口的系统
引入jar
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 --> <dubbo:application name="supply-statisticsService"></dubbo:application> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" check="false"></dubbo:registry> <!-- 要引用的服务 --> <dubbo:reference interface="接口的全限定名称(com.....)" id="statisticsInquiryPriceOrderService"></dubbo:reference> <dubbo:reference interface="接口的全限定名称(com.....)" id="statisticsOrderService"></dubbo:reference> </beans>
需要使用的contcontroller直接和spring的依赖注入一样:
调用
这样发现使用http访问,webservice是不是清爽的很多呢,如有什么不对的地方还望指正,以免误人子弟,谢谢!