以前跨系统访问是直接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是不是清爽的很多呢,如有什么不对的地方还望指正,以免误人子弟,谢谢!

 

 posted on 2018-06-05 16:01  _萨瓦迪卡  阅读(311)  评论(0编辑  收藏  举报