SSH+Dubbo+zookeeper集成

这篇文章将介绍基于SS(struts+spring,hibernate暂时没用,所以暂未集成进去)框架的项目与dubbo和zookeeper进行集成,由于先前搭建过SS框架,所以这里就基于SS与dubbo和zookeeper进行集成,当然也可以使用spring mvc与dubbo和zookeeper进行集成。搭建这样的框架就包括三部分:
1、SS框架:该部分是基于SS搭建的项目框架,具体搭建可以在网上查看相应的集成方法,我这里已经集成好了,所以可以直接使用;
2、zookeeper:zookeeper作为dubbo的服务注册中心,可以是搭建单机环境的zookeeper,也可以搭建集群环境的zookeeper,我这里使用的是集群zookeeper,具体怎么搭建集群zookeeper,可以参照我这篇博客:http://blog.csdn.net/lzjlzjlzjlzjlzjlzj/article/details/59090622
3、dubbo:这部分包括三个部分:
(1)、公用接口部分:该部分为服务生产者和服务消费者提供统一的接口,实现中会把该部分打包成一个jar包,供服务生产者和服务消费者使用。服务生产者实现这些接口,服务消费者引用这些接口;
(2)、服务生产者:该部分是实现了公用接口部分,并把其提供的服务注册到注册中心中,以便服务消费者使用;
(3)、服务消费者:该部分是服务消费者,就是调用注册到注册中心的服务。

由以上分析可见,第1、2部分在我的环境中已经搭建完成,那么接下来主要搭建第3部分的内容。第三部分的内容也包括三个小部分,我这里把这三个小部分分成三个项目:Dubbo-Interface、Dubbo-Provider、Dubbo-Consumer。

Dubbo-Interface
Dubbo-Interface项目是集成了spring和struts的(可以直接定义接口,不必集成spring和struts),并且添加了maven支持。该项目主要的作用就是定义一些公用接口,我这里在com.lzj.model.service.app.dubbo包路径下定义了一个IRegistryService接口,该接口包括一个sayHello方法:
这里写图片描述

然后利用maven的mvn install命令把该项目打包成一个jar,并且安装到自己的本地仓库中:
这里写图片描述

在本地仓库中,就可以看到自己刚才打包的jar包了,该jar包就包含定义的接口:
这里写图片描述

至此,Dubbo-Interface部分就算完成了,接下来完成Dubbo-Provider部分。

Dubbo-Provider
Dubbo-Provider项目同样是集成了spring和struts的,并且添加了maven支持。该部分就是要实现在Dubbo-Interface部分定义的接口,并且使用dubbo把服务注册到注册中心zookeeper中。实现类RegistryServiceImpl在com.lzj.model.service.app.dubbo.impl包路径下:
这里写图片描述

到这一步是会报错的,提示说找不到IRegistryService类,这是必然的,因为在Dubbo-Provider部分还没引入在Dubbo-Interface部分中生成的jar,那么接下来就需要修改pom文件,引入接口jar、dubbo和zookeeper依赖的jar:
这里写图片描述

接下来,就需要利用dubbo把服务注册到注册中心去了,修改applicationContext.xml文件:
这里写图片描述

至此,Dubbo-Provider部分就已经集成了,那么把该项目部署到tomcat的webapps下,启动tomcat之前记得把zookeeper先启动,要不然服务无法注册到zookeeper中。服务启动后,可以通过dubbo提供的管理平台查看服务是否正常注册,但是dubbo提供的管理平台同样需要部署才能使用,关于dubbo的管理平台如何部署,可以查看我的个人博客:http://blog.csdn.net/lzjlzjlzjlzjlzjlzj/article/details/59108575。当管理平台部署正确后,可以查看到服务、服务生产者和服务消费者的情况:
这里写图片描述

这里可以看到已经有一个服务和一个服务提供者,但是服务消费者还是为0,这是因为我们还没完成服务消费者这一步,接下来将完成服务消费者。

Dubbo-Consumer
Dubbo-Consumer项目同样是集成了spring和struts的,并且添加了maven支持。该部分同样需要引入接口jar、dubbo和zookeeper依赖的jar:
这里写图片描述

接下来,就需要配置如何引入服务,修改applicationContext.xml文件:
这里写图片描述

然后就是在代码中调用服务提供者提供的服务:
这里写图片描述

至此,服务消费者部分也完成了。

测试
接下来我们进行测试,测试时记得启动zookeeper和服务提供方的服务器,否则无法调用服务。我这里提供了两种测试方法,一种不需要把Dubbo-Consumer部署到tomcat服务器中,另一种是需要把Dubbo-Consumer部署到tomcat服务器中。

先介绍第一种方法,测试代码如下:
这里写图片描述
可以看到,服务能够正常的调用。但是这样运行完之后,我们在dubbo的管理界面是看不到消费者数量的改变的,如果需要看到消费者数量的改变,需要在测试代码最后加入System.in.read();
这里写图片描述

接下来介绍第二种测试方法,这种方法需要借助前端jsp发送请求到后台,并且需要有action来调用service层的方法,所以需要把Dubbo-Consumer也部署到tomcat服务器中。jsp测试代码如下:
这里写图片描述

然后访问jsp即可调用服务:
这里写图片描述

这时候dubbo管理页面也显示了消费者数:
这里写图片描述

至此,整个集成过程已经结束。

说明
1、该文章主要演示使用dubbo进行服务发布、注册和消费的过程,大家不必按照我的步骤和环境进行搭建,可以根据自己的环境,参考本文的过程进行搭建;
2、项目中用到的环境需要自行搭建,有些搭建过程可以参照我之前的文章,在相应的位置也提供了链接;
3、项目中有些内容可能是非必要的,比如在定义公共接口部分没必要集成spring和struts,由于我这里是基于同一套框架,所以还会保留这些内容,所以大家如果在搭建的时候,可以去掉一些无用的东西。

遇到的问题
1、使用zookeeper作为服务的注册中心,如果是单机状态,那么在服务提供者和服务消费者的配置文件applicationContext.xml中只配置该zookeeper的信息即可;但是如果zookeeper是集群环境,就需要列出所有zookeeper服务器信息,否则无法正确的进行服务注册和服务消费。个人还没明白为什么要列出所有的zookeeper服务器的信息,有明白的大神希望能留言告知原因;
2、在进行测试时,一定要记得启动zookeeper和服务提供方的服务器,只有服务器启动起来了,才能进行服务的注册和消费。在利用第二种测试方法时,也要记得把服务消费者部署到服务器中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值