之前跨系統訪問是直接http、webservice等,近期有能使用dubbo的應用場景,特來記一下git
本次會使用zookeeper來當註冊中心github
首先引入dubbo的依賴web
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下面也是行,就是比較麻煩並且一有改動就須要重新打包替換spring
暴露接口的系統引入jar,並實現接口apache
而後配置暴露服務器的名稱信息:服務器
<?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>
使用暴露接口的系統架構
引入jarapp
配置文件ui
<?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的依賴注入同樣:spa
調用
這樣發現使用http訪問,webservice是否是清爽的不少呢,若有什麼不對的地方還望指正,以避免誤人子弟,謝謝!