zookeeper,dubbo,spring整合

来源:互联网 发布:淘宝卖家复制宝贝 编辑:程序博客网 时间:2024/05/17 01:21

           dubbo框架是国内很优秀的一个分布式远程调用服务的框架,一般情况下dubbo都与zookeeper配合使用(zookeeper作为dubbo中RPC服务的注册中心,在官方文档中也明确建议使用zookeeper)。本文通过代码介绍下dubbo,zookeeper,spring的整合。

    编写服务提供者代码

           maven引入spring,dubbo和zookeeper相关包,这里需要注意的是在引入dubbo包的时候,要用<exclusion>标签排除com.alibaba.dubbo包中带有的spring包,不然在部署时会造成包冲突,报出java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeArguments异常。           

<properties><spring.version>3.2.9.RELEASE</spring.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- spring begin --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- spring end --><!-- web jar --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.1.2</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version><scope>provided</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions>  <exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.9</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.3</version></dependency></dependencies>

创建服务接口,并实现提供的服务


public interface DubboService {public String helloword(String say);}


import org.springframework.stereotype.Service;@Service("dubboService")public class DubboServiceImp implements DubboService {public String helloword(String say) {System.out.println("hello word");return "return:"+say;}}

创建dubbo-provider.xml将服务暴露出来。

<?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="dubbo-provider"></dubbo:application><!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry address="zookeeper://10.151.30.28:2181"check="false" subscribe="false" register=""></dubbo:registry><!-- 要暴露的服务接口 --><dubbo:service interface="com.lidong.dubbo.DubboService"ref="dubboService" /></beans>

启动项目即可。


服务消费者代码

           maven引入相关包

<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- spring begin --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- spring end --><!-- web jar --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.1.2</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.1</version><scope>provided</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.9</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.3</version></dependency></dependencies>


              创建dubbo-customer.xml引用服务

<?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:application name="dubbo-consumer"></dubbo:application>   <!-- 使用zookeeper注册中心暴露服务地址 -->     <dubbo:registry address="zookeeper://10.151.30.28:2181" check="false"></dubbo:registry>      <!-- 要引用的服务 -->     <dubbo:reference interface="com.lidong.dubbo.DubboService" id="dubboService"></dubbo:reference></beans>

      

          测试


public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "spring-mvc.xml" });context.start();DubboService service =(DubboService) context.getBean("dubboService");String helloword = service.helloword("success");System.out.println(helloword);}





0 0
原创粉丝点击