使用方式
父工程,管理依赖版本
配置dubbo版本
<dubbo.version>2.5.3</dubbo.version>
<zookeeper.version>3.4.7</zookeeper.version>
<zkclient.version>0.1</zkclient.version>
配置引用
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.version}</version>
</dependency>
生产者,Service
消费者,Web
都是独立的工程
都需要添加对Dubbo相关jar包的引用
Service
添加引用
<!-- dubbo相关的jar包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>netty</artifactId>
<groupId>org.jboss.netty</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
注意
由于Maven依赖传递
引入dubbo会把dubbo的相关依赖引入
需要排除dubbo依赖的Spring、netty
否则,可能会发生版本冲突的问题
Web同理,配置一样
Interface
Service、Web
都需要添加对接口的引用
必须保证接口的一致,才可以实现服务调用
Service引用接口
Pom.xml
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-manager-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Web同理,配置一样
发布服务
Service发布服务
applicationContext-service.xml
添加dubbo标签、约束
xmlns:dubbo=http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
暴露服务
<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="taotao-manager" />
<!-- 注册中心的地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.25.167:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.taotao.service.ItemService" ref="itemServiceImpl" timeout="300"/>
调用服务
Web调用服务
springmvc.xml
同理,添加dubbo标签、约束
调用服务
<!-- 引用dubbo服务 -->
<dubbo:application name="taotao-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.167:2181"/>
<dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />
注意
配置在springmvc.xml
或者添加一个配置文件,扫描到Spring容器
调用服务,需要从容器中获取服务
所以,需要将服务注册到容器中
Spring MVC前端控制器
会初始化一个Spring MVC容器
将服务通过id,注册到Spring MVC容器
在Controller中,通过注解直接可以引用