修改消费者配置
删除关于service层的配置
由于web项目中不需要扫描service项目中的配置文件,所以在web.xml中删除关于applicationContext的配置
在dubbo-web的pom文件中显示依赖于本地的dubbo-service项目,这里我们是需要删除的,因为将来这两个项目会部署在不同的服务器上
将其删除后,controller层出现报错,显示找不到service层
创建userservice
在web项目中添加service层,创建接口UserService
package com.itheima.service;
public interface UserService {
public String sayHello();
}
修改注解
Autowire是在本地的spring容器里面寻找,此处我们不再使用
将注解修改为Reference,注意有两个reference,我们要导入dubbo的
Reference
1.从zookeeper注册中心获取userService的访问url
2.进行远程调用RPC
3.将结果封装为一个代理对象。给变量赋值
在spring.xml中配置dubbo
在springmvc.xml中添加dubbo配置,设置项目名称为dubbo-web,让dubbo扫描controller层,这里原本关于controller层的扫描不能删除,因为还需要扫描本地注解
<!-- dubbo的配置-->
<!-- 1.配置项目名称,名称唯一-->
<dubbo:application name="dubbo-web"/>
<!-- 2.配置zookeeper地址(注册中心)-->
<dubbo:registry address="zookeeper://101.43.128.190:2181"/>
<!-- 3.配置dubbo的包扫描-->
<dubbo:annotation package="com.itheima.controller"/>
到这里配置修改就成功了
执行测试
1.打开服务器的zookeeper
2.启动service项目的Tomcat
3.启动web项目的Tomcat
4.刷新网站,如果成功输出未报错的话就说明配置消费者成功
问题解决
在web端的Tomcat会出一个报错显示qos的22222端口不可使用,是因为我们使用的是本地启用两个服务,而在service端已经占用了22222端口
解决办法
在springmvc配置修改qos端口为33333,然后重启web端的Tomcat即可
总结
在web项目中因为没有service层所以我们的解决办法是定义一个service层接口并且该接口名和其中的方法名要和service项目中的一模一样,如果有多个service和web时可能接口会定义错误
解决办法
设置一个公共接口,让service模块和web模块一起调用公共接口

设置公共接口
新建一个Maven模块作为公共接口

定义service层,在里面创建userservice接口

这时可以将service项目和web项目的userservice接口删除了
添加service项目的接口为dubbo-interface
此时发现service中的UserServiceImpl和web的controller中的UserService会报错,这是因为之前导的包是本地的,需要将依赖更换成dubbo的
service项目
web项目
更换后
对dubbo-interface进行install
install后才会使interface生效

生效后依次启动service和web再测试网页能否成功运行即可,或者可以对service层的impl层修改其输出,然后检查网页输出是否更新
至此一个普通的dubbo项目就搭建完成,下一步我们要学习dubbo的高级特性admin
上一篇:(20条消息) 从零开始学习Dubbo4——让模块独立运行_崔泡泡—猫的博客-优快云博客