Dubbo的XML开发的2个问题:端口占用、映射不到Controller、Service等

大前提

1、阿Sir,Zookeeper要开啊(Server、Client)
2、运行之前先在父工程的生命周期中,先clean下再install下(都在Maven中)

一、问题1:java.net.BindException: Address already in use: bind

1、前提

用的IDEA;
dubbo有Consumer和Provider,它们有各自的Tomcat,我们应该在各自项目的pom.xml中修改它们的Tomcat端口,使它们不同,但:

2、问题出现

可能你会困惑,明明修改了两Tomcat的端口都不一致了,为啥还出现Address already in use

3、原因

控制台报错:

[DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.7.10

dubbo还有个QOS Server端口,默认为22222,俩Tomcat的QOS都用了这个端口,不冲突才怪嘞

4、解决方法

因此需要修改Consumer、Provider这两者之中至少一个项目的QOS Server端口,比如我修改Consumer的,在其有关于dubbo的配置文件(spring-dubbo)中添加如下内容:

<!-- dubbo_comsumer在dubbo的应用名称,更改qos服务端口为33333 -->
<dubbo:application name="dubboConsumer">
    <dubbo:parameter key="qos.enable" value="true" />
    <dubbo:parameter key="qos.accept.foreign.ip" value="false" />
    <dubbo:parameter key="qos.port" value="33333" />
</dubbo:application>

二、问题2:找不到映射

1、前提

(1) 在Provider的Service中的配置文件
spring-dubbo.xml

<!-- 1、配置dubbo_provider的dubbo应用名称 -->
<dubbo:application name="dubboProvider"/>

<!-- 2、由于Provider需注册到Zookeeper中才能用,因此需配置dubbo注册中心Zookeeper地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

<!-- 3、要将对应工程中指定的信息注册到zookeeper中,因此要配置需要暴露出来的业务接口和实例 -->
<dubbo:service interface="service.UserService" ref="userServiceImpl"/>

<!-- 4、UserServiceItf实现类对象 -->
<bean id="userServiceImpl" class="service.UserServiceImpl"/>

(2) 在Consumer中的Controller中的配置文件
spring-dubbo.xml

<!-- 1、dubbo_comsumer在dubbo的应用名称,更改qos服务端口 -->
<dubbo:application name="dubboConsumer">
    <dubbo:parameter key="qos.enable" value="true" />
    <dubbo:parameter key="qos.accept.foreign.ip" value="false" />
    <dubbo:parameter key="qos.port" value="33333" />
</dubbo:application>

<!-- 2、配置dubbo注册中心Zookeeper地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

<!-- 3、订阅远程服务对象 -->
<dubbo:reference id="userService" interface="service.UserService"/>

<!-- 4、Consumer引用Provider提供至注册中心的接口的实现类对象 -->
<bean id="userController" class="controller.UserController">
    <property name="userServiceImpl" ref="userService"/>
</bean>
2、问题出现

跑了Provider的Tomcat后,跑Consumer的Tomcat,控制台报错:

//第1个错误:
Error creating bean with name 'userController' defined in file
[E:\IDEACode\dubbo_parent\dubbo_consumer\target\classes\spring\spring-dubbo.xml]: 
Cannot resolve reference to bean 'userService' while setting bean property 'userServiceImpl';
//第2个错误:
Error creating bean with name 'userService': FactoryBean threw exception on object creation;
//第3个错误:
Caused by: java.lang.NoClassDefFoundError: org/apache/curator/x/discovery/ServiceDiscovery
3、原因

emmmmm… 鹅唔鸡啊…
🐟果内鸡斗嘅话,评论区雷港畀鹅听吼唔吼啊嘻嘻,唔该晒

但我知道主要针对第3个错误锤就完事了,面向stackoverflow编程得到以下解决方案

4、解决方法

在父工程和Comsumer的工程里的pom.xml添加上有关于Zookeeper客户端的依赖:
(这里的依赖版本被我导出到dependencies外面了)

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-x-discovery</artifactId>
    <version>${curator.version}</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值