Dubbo GenericWebApplicationContext does not support getConfigLocatio
问题概述
新应用搭建后,开发环境,综测,准生产都是顺利的,但是到了生产一直有 warn,这就很奇怪的,也没有找到同样的错误,这里记录一下,问题也解决方案
生产日志图
GenericWebApplicationContext does not support getConfigLocations()
描述当前配置环境
1,操作系统 redhat6.7
2,环境 生产环境
3,版本信息 生产环境系统版本:redhat6.7
spring-boot版本:1.5.18
spring版本:4.3.21
dubbo版本:2.6.6
jetty版本:8.1.13
java版本:1.8.0_45
解决思路
dubbo异常看dubbo 源码是怎么运行的
问题跟踪:
从dubbo 2.0.5, dubbo开始支持telnet命名管理服务,比如最常用的 invoke 常用列表 关键点我们看 status
status
status: show summarized status. This status summarizes statuses from all resources, and it shows OK when all resources are OK, shows ERROR when any resource has ERROR, and WARN when any has WARN.status -l: show status list
重点跟踪 status -l 执行的过程
源码跟踪
status -l 执行会调用 SpringStatusChecker 类型 坐标地址:
com.alibaba.dubbo.config.spring.status;
SpringStatusChecker 会进行反射 调用 getConfigLocations
反射调用: GenericWebApplicationContext 的 getConfigLocations 代码展示:
坐标地址org.springframework.web.context.support;
我们应用是 SpringBoot 应用
org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
我们看一下结构图
方法被反射调用的时候会报出日志中的错误.
解决方案:
dubbo xml 中配置进行修改
<dubbo:protocol status="-spring" />
通过在配置中去掉不需要的SPI扩展点来解决此类问题.warn级别日志不在出现,重点是
status="spring"