Dubbo:GenericWebApplicationContext does not support getConfigLocatio解决方案

524 阅读1分钟
Dubbo GenericWebApplicationContext does not support getConfigLocatio

问题概述

新应用搭建后,开发环境,综测,准生产都是顺利的,但是到了生产一直有 warn,这就很奇怪的,也没有找到同样的错误,这里记录一下,问题也解决方案

上号 生产日志图

日志.png

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

  1. 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.
  2. status -l: show status list

重点跟踪 status -l 执行的过程

源码跟踪

status -l 执行会调用 SpringStatusChecker 类型 坐标地址:

com.alibaba.dubbo.config.spring.status;

SpringStatusChecker 会进行反射 调用 getConfigLocations

SpringStatusChecker.png 反射调用: GenericWebApplicationContext 的 getConfigLocations 代码展示:

坐标地址org.springframework.web.context.support;

我们应用是 SpringBoot 应用

org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext

我们看一下结构图

uml图.png 方法被反射调用的时候会报出日志中的错误. 图片.png

解决方案:

dubbo xml 中配置进行修改

    <dubbo:protocol  status="-spring" /> 

通过在配置中去掉不需要的SPI扩展点来解决此类问题.warn级别日志不在出现,重点是

    status="spring"