从零开始学习Dubbo5——让模块独立运行下

本文介绍了如何在web项目中修改消费者配置,移除service层依赖,配置Dubbo并实现远程调用。重点讲解了如何创建UserService接口,调整Autowire为Reference,配置dubbo应用和注册中心,并解决了Tomcat端口冲突问题。最后,通过公共接口统一web和service模块调用,确保项目正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改消费者配置
删除关于service层的配置

由于web项目中不需要扫描service项目中的配置文件,所以在web.xml中删除关于applicationContext的配置

image-20220902171516843

在dubbo-web的pom文件中显示依赖于本地的dubbo-service项目,这里我们是需要删除的,因为将来这两个项目会部署在不同的服务器上

image-20220902170616563

将其删除后,controller层出现报错,显示找不到service层

image-20220902170806279

创建userservice

在web项目中添加service层,创建接口UserService

image-20220902171300190

package com.itheima.service;

public interface UserService {
    public String sayHello();
}

修改注解

Autowire是在本地的spring容器里面寻找,此处我们不再使用

image-20220902171840017

将注解修改为Reference,注意有两个reference,我们要导入dubbo的

image-20220902173658047

Reference

1.从zookeeper注册中心获取userService的访问url

2.进行远程调用RPC

3.将结果封装为一个代理对象。给变量赋值

image-20220902172048411

在spring.xml中配置dubbo

在springmvc.xml中添加dubbo配置,设置项目名称为dubbo-web,让dubbo扫描controller层,这里原本关于controller层的扫描不能删除,因为还需要扫描本地注解

image-20220902172631537

    <!--	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

image-20220902173849223

2.启动service项目的Tomcat

image-20220902173931871

3.启动web项目的Tomcat

image-20220902173942537

4.刷新网站,如果成功输出未报错的话就说明配置消费者成功

image-20220902174035498

问题解决

在web端的Tomcat会出一个报错显示qos的22222端口不可使用,是因为我们使用的是本地启用两个服务,而在service端已经占用了22222端口

解决办法

在springmvc配置修改qos端口为33333,然后重启web端的Tomcat即可

image-20220902175052089

总结

在web项目中因为没有service层所以我们的解决办法是定义一个service层接口并且该接口名和其中的方法名要和service项目中的一模一样,如果有多个service和web时可能接口会定义错误

解决办法

设置一个公共接口,让service模块和web模块一起调用公共接口

image-20220902175846019
设置公共接口

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

image-20220902180112543

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

image-20220902180430880

这时可以将service项目和web项目的userservice接口删除了

添加service项目的接口为dubbo-interface

此时发现service中的UserServiceImpl和web的controller中的UserService会报错,这是因为之前导的包是本地的,需要将依赖更换成dubbo的

service项目

image-20220902211427909

web项目

image-20220902212013834

更换后

image-20220902211649166

对dubbo-interface进行install

install后才会使interface生效

image-20220902211726010

生效后依次启动service和web再测试网页能否成功运行即可,或者可以对service层的impl层修改其输出,然后检查网页输出是否更新

image-20220902212345729

至此一个普通的dubbo项目就搭建完成,下一步我们要学习dubbo的高级特性admin
上一篇:(20条消息) 从零开始学习Dubbo4——让模块独立运行_崔泡泡—猫的博客-优快云博客

下一篇:(20条消息) 从零开始学习Dubbo6——控制端dubbo-admin_崔泡泡—猫的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值