dubbo服务无法注册到zookeeper的问题

 更新时间:2025年07月16日 09:46:30   作者:VenMan  
Dubbo+Zookeeper项目服务注册失败,因模块创建时误选Web项目导致main下文件夹名为data,服务未被识别,更改为java后,服务正常注册,Zookeeper心跳及接口调用问题解决

Dubbo+Zookeeper后台项目中服务注册不上

1、接口调用时页面报404,后台发现不了请求的url

19:51:56,458 DEBUG DispatcherServlet:891 - DispatcherServlet with name 'springmvc' processing GET request for [/custmer/findAll.do]
19:51:56,460 DEBUG RequestMappingHandlerMapping:312 - Looking up handler method for path /custmer/findAll.do
19:51:56,461 DEBUG RequestMappingHandlerMapping:322 - Did not find handler method for [/custmer/findAll.do]
19:51:56,462  WARN PageNotFound:1205 - No mapping found for HTTP request with URI [/custmer/findAll.do] in DispatcherServlet with name 'springmvc'
19:51:56,462 DEBUG DispatcherServlet:1000 - Successfully completed request

2、服务启动后一直没有收到zookeeper心跳机制的反馈,正常情况下日志中会打印出来

19:51:20,214  INFO DispatcherServlet:509 - FrameworkServlet 'springmvc': initialization completed in 1771 ms
19:51:20,214 DEBUG DispatcherServlet:175 - Servlet 'springmvc' configured successfully
五月 03, 2022 7:51:20 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-82"]

可能存在的问题

1、扫描不到服务

2、地址拦截,请求不通过

3、因为使用了dubbo,在导包注解可能存在导错其他包

排查

1、翻看多次配置,发现能正常扫描到指定controller文件

<web-app>
<!--提供外部接口访问-->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-mvc.xml</param-value>
  </init-param>
<!--初始化容器-->
    <load-on-startup>1</load-on-startup>
  </servlet>
<!--匹配-->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>
<beans>
    <!--mvc注解驱动-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--dubbo包扫描-->
    <dubbo:annotation package="com.happy.web"></dubbo:annotation>
    <!--注册中心-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
    <!--应用名称-->
    <dubbo:application name="happy-web"></dubbo:application>
    <!--消费端启动检查-->
    <dubbo:consumer check="false" timeout="6000000"></dubbo:consumer>
</beans>

2、tomcat中配置了任何请求都可以到达

<project>
  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <!--指定端口-->
                    <port>82</port>
                    <!--请求路径-->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3、controller和service中导入的包正常

import com.alibaba.dubbo.config.annotation.Reference;
import com.happy.pojo.Custmer;
import com.happy.service.CustmerService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/custmer")
public class CustmerController {

    @Reference
    CustmerService custmerService;

    @RequestMapping("/findAll")
    public List<Custmer> findAll() {
        List<Custmer> all = custmerService.findAll();
        return all;
    }
}
import com.alibaba.dubbo.config.annotation.Service;
import com.happy.dao.CustmerMapper;
import com.happy.pojo.Custmer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

@Service(interfaceClass = CustmerService.class)
@Transactional
public class CustmerServiceImpl implements CustmerService {
    @Autowired
    CustmerMapper custmerMapper;

    @Override
    public List<Custmer> findAll() {
        return custmerMapper.findAll();
    }
}

以上问题解决方法都试过后,发现不符合本次问题解决方式。项目之前有过做过,经过多次对比也没有发现有什么不同之处,最后找朋友看了下,才发现问题

本次问题的原因

  • 在建立模块时选择了web项目

  • main下面自动生成的文件夹名为data,导致服务找不到

本次问题的解决方法

main下面的文件名更改为java后正常

zookeeper心跳机制正常:

20:32:51,927  INFO DispatcherServlet:509 - FrameworkServlet 'springmvc': initialization completed in 3575 ms
20:32:51,927 DEBUG DispatcherServlet:175 - Servlet 'springmvc' configured successfully
五月 03, 2022 8:32:51 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-82"]
20:32:56,208 DEBUG ClientCnxn:766 - Got notification sessionid:0x18089b835320006

接口调用正常:

20:33:29,254 DEBUG DispatcherServlet:891 - DispatcherServlet with name 'springmvc' processing GET request for [/custmer/findAll.do]
20:33:29,255 DEBUG RequestMappingHandlerMapping:312 - Looking up handler method for path /custmer/findAll.do
20:33:29,259 DEBUG RequestMappingHandlerMapping:319 - Returning handler method [public java.util.List<com.happy.pojo.Custmer> com.happy.web.CustmerController.findAll()]
20:33:29,259 DEBUG DefaultListableBeanFactory:254 - Returning cached instance of singleton bean 'custmerController'
20:33:29,260 DEBUG DispatcherServlet:979 - Last-Modified value for [/custmer/findAll.do] is: -1
20:33:34,892 DEBUG DecodeHandler:58 -  [DUBBO] Decode decodeable message com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult, dubbo version: 2.6.0, current host: 192.168.1.115
20:33:34,967 DEBUG RequestResponseBodyMethodProcessor:277 - Written [[Custmer(id=1, name=小王), Custmer(id=2, name=小杨), Custmer(id=3, name=小刘), Custmer(id=4, name=小李)]] as "application/json" using [org.springframework.http.converter.json.GsonHttpMessageConverter@3b3104b1]
20:33:34,969 DEBUG DispatcherServlet:1076 - Null ModelAndView returned to DispatcherServlet with name 'springmvc': assuming HandlerAdapter completed request handling
20:33:34,971 DEBUG DispatcherServlet:1000 - Successfully completed request

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用JAVA实现邮件发送功能的图文教程

    使用JAVA实现邮件发送功能的图文教程

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,下面这篇文章主要给大家介绍了关于使用JAVA实现邮件发送功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • SpringBoot整合redis实现计数器限流的示例

    SpringBoot整合redis实现计数器限流的示例

    本文主要介绍了SpringBoot整合redis实现计数器限流的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 一篇文章掌握Java Thread的类及其常见方法

    一篇文章掌握Java Thread的类及其常见方法

    Thread类用于操作线程,是所以涉及到线程操作(如并发)的基础。本文将通过代码对Thread类的功能作用及其常见方法进行分析
    2022-03-03
  • SpringCloud-Alibaba-Sentinel服务降级,热点限流,服务熔断

    SpringCloud-Alibaba-Sentinel服务降级,热点限流,服务熔断

    这篇文章主要介绍了SpringCloud-Alibaba-Sentinel服务降级,热点限流,服务熔断,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java实现简单堆栈代码

    Java实现简单堆栈代码

    这篇文章主要为大家详细介绍了Java实现简单堆栈代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 关于log4j漏洞修复解决方案及源码编译

    关于log4j漏洞修复解决方案及源码编译

    Log4j 是Apache为Java提供的日志管理工具。他与System.out.println()的作用相似,用来跟踪、调试、维护程序。这篇文章主要介绍了关于log4j漏洞修复解决方案及源码编译,需要的朋友可以参考下
    2021-12-12
  • java实现拼图小游戏

    java实现拼图小游戏

    这篇文章主要为大家详细介绍了java实现拼图小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Java之Pattern.compile函数用法详解

    Java之Pattern.compile函数用法详解

    这篇文章主要介绍了Java之Pattern.compile函数用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java21新特性Record Patterns示例详解

    Java21新特性Record Patterns示例详解

    这篇文章主要为大家介绍了Java21新特性Record Patterns示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java String类的常用方法汇总

    Java String类的常用方法汇总

    这篇文章主要为大家详细汇总了Java String类的常用方法,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论