RpcException
17:31:15,243 DEBUG RequestResponseBodyMethodProcessor:201 - Read [class com.itheima.pojo.CheckItem] as "application/json;charset=UTF-8" with [com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter@453d14cf] 17:31:15,272 DEBUG AnnotationUtils:1889 - Failed to meta-introspect annotation interface org.springframework.web.bind.annotation.RequestBody: java.lang.NullPointerException **com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for service com.itheima.service.CheckItemService on consumer 192.168.23.1 use dubbo version 2.6.0, may be providers disabled or not registered ?**
17:31:15,318 DEBUG RequestResponseBodyMethodProcessor:277 - Written [com.itheima.entity.Result@45b539ac] as "application/json" using [com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter@453d14cf] 17:31:15,319 DEBUG DispatcherServlet:1076 - Null ModelAndView returned to DispatcherServlet with name 'springmvc': assuming HandlerAdapter completed request handling 17:31:15,319 DEBUG DispatcherServlet:1000 - Successfully completed request
今天在做项目的时候,应该说昨天,就遇到了这个问题,因为是第一次接触zookeeper和dubbo,本来以为是因为配置的问题,一直弄到今天中午,在此期间查阅资料无数,都没有什么效果,直到发现了这篇作者为CSDN博主「程序员小龙@」的文章。
原文章地址
它指出了三点,分别为:
1、查看UserServiceImpl所在的服务提供方项目health_service_provider启动是否有异常,服务提供方项目启动有异常会导致项目启动失败,那服务就无法注册到zookeeper注册中心中。
2、查看health_service_provider中的配置文件中dubbo的相关配置中的包扫描操作是否和UserServiceImpl所在的包一致
3、查看health_service_provider中的UserServiceImpl中的@Service注解的包是否是com.alibaba.dubbo.config.annotation.Service,或者查看@Service注解是否有声明UserService接口的class文件
查看自己的代码,认真分析后,发现竟然是配置文件缺失,确定配置文件都在后,我查找了web.xml中的引用,发现是引用问题,改正问题后,重启项目,正常运行。
错误代码:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param>
正确代码:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring*.xml</param-value> </context-param>
回顾自己找bug的始末,愈加发觉要从bug本身出发,延伸到代码,深入思考,在百度编程的过程中,要将问题精简发出,才更有可能找寻到适合问题的答案。立此贴,用来当经验警醒。最后祝所有能看到这篇文章的人都能短时间内顺利解决bug(包括我)。