自己玩了一下dubbox,简单介绍一下搭建dubbox的过程。
首先我们得了解dubbox的原理:
第一步:在linux系统中安装zookeeper并启动。(通常情况下,zookeeper需要搭建集群,我实际应用遇到的是三个zookeeper搭建集群)
第二步:配置服务提供方(创建一个maven项目)
创建applicationContext—service.xml
1.起名称
<dubbo:application name="dubboxdemo-service"/>
2.连接zookeeper注册中心
<dubbo:registry address="zookeeper://192.168.200.128:2181"/>
3.如果修改了默认的端口号和ip,需要配置以下内容
<dubbo:protocol host="127.0.0.1" port="20880"/>
4.对外暴露接口
<dubbo:service interface="一个接口"/>
这么写也可以说的通,但是如果我们有上百个接口,岂不是要写上百条次配置,所以我们最好的方法可以配置成包扫描的方式。
<dubbo:annotation package="cn.taiji.dubboxdemo.service"/>
所以我们要在此包下书写接口和实现类,既然要扫描这个包就要在实现类中打service注解
注意:添加service注解时,导入的包应该是alibaba的包,因为我们要用的是alibaba的dubbox,所以要导alibaba的包
暴露接口的目的就是暴露里面的方法,所以我们要把暴露的方法写在实现类中即可。
此时服务提供方要对外暴露的就是getName方法,启动服务即可
第三步:配置服务消费方
配置applicationContext-web.xml配置文件
注意:web.xml配置文件中的乱码不能解决json串里面的中文乱码
applicationContext-web.xml里面的这段配置是解决json串里面的中文乱码
如果前端页面用的是jsp就需要配置视图解析器,如果是html页面就不需要配置。
1.:起个名称,方便识别
<dubbo:application name="dubboxdemo-web"/>
2.连接zookeeper注册中心
<dubbo:registry address="zookeeper://192.168.200.128:2181"/>
3.引用或调用接口
这里也可以配置一个接口,但是我还是选择使用包扫描的方式
<dubbo:annotation package="cn.taiji.dubboxdemo.controller"/>
cms和g1
根据扫描的包,在此包下书写controller
注意:
1.我们在每个方法上都写一个@RsponseBody注解感觉很麻烦,我们可以把此注解卸载类上,表明此类的所有方法都返回json串。那么可以用一个注解@RestController代替@Controller注解和@RsponseBody注解的作用。
2.由于userService写在消息提供方,不在一个工程下面我们拿不到,所以要将接口放到服务方下面。注解也不是@Autowired,而是alibaba的@Reference注解。
注意:由于服务方很任性,它的默认调用时间为一秒,一秒内调用不同就会报500的错误。所以在上线之前的测试阶段我们可以在服务方配置超时时间长一点
<!-- 全局配置超时时间为10分钟,单位为毫秒 -->
<dubbo:consumer timeout="600000"/>