zoukankan      html  css  js  c++  java
  • AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;

    在整合sentinel和服务的时候,报标题这个错,也是由版本原因导致的

    feign的Contract接口,
    2.2.0.RELEASE:

    // TODO: break this and correct spelling at some point
    List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType);
    

    2.2.2.RELEASE:

    List<MethodMetadata> parseAndValidateMetadata(Class<?> targetType);
    

    在2.2.0.RELEASE里有一行注释描述,接口方法名拼写错误,在2.2.2.RELEASE方法已修正了,即方法名发生了改变。
    在spring-cloud-alibaba-sentinel中的SentinelContractHolder类,用到了该接口的这个方法(feign2.2.0.RELEASE版本):

    @Override
    public List<MethodMetadata> parseAndValidatateMetadata(Class<?> targetType) {
    	List<MethodMetadata> metadatas = delegate.parseAndValidatateMetadata(targetType);
    	metadatas.forEach(metadata -> METADATA_MAP
    			.put(targetType.getName() + metadata.configKey(), metadata));
    	return metadatas;
    }
    

    解决办法,要不修改版本,要不就是在工程合适的地方,新建包com.alibaba.cloud.sentinel.feign。重新修改一下SentinelContractHolder即可

    /**
     * @author WGR
     * @create 2020/8/21 -- 0:27
     */
    public class SentinelContractHolder implements Contract {
        private final Contract delegate;
    
        /**
         * map key is constructed by ClassFullName + configKey. configKey is constructed by
         * {@link feign.Feign#configKey}
         */
        public final static Map<String, MethodMetadata> METADATA_MAP = new HashMap<>();
    
        public SentinelContractHolder(Contract delegate) {
            this.delegate = delegate;
        }
    
        @Override
        public List<MethodMetadata> parseAndValidateMetadata(Class<?> targetType) {
            List<MethodMetadata> metadatas = delegate.parseAndValidateMetadata(targetType);
            metadatas.forEach(metadata -> METADATA_MAP
                    .put(targetType.getName() + metadata.configKey(), metadata));
            return metadatas;
        }
    }
    
  • 相关阅读:
    Django创建博客
    使用LR的socket协议进行进行性能测试,转解决方案
    loadrunner测试c/s架构的应用系统
    C/S架构的性能测试
    Win10离线安装.NET Framework 3.5的方法技巧(附离线安装包下载)
    VMWare虚拟机无法连接网络!
    Microsoft Windows XP SP3 官方原版镜像下载,绝对原版加系列号!
    软件cs页面分辨率测试
    C/S结构软件测试要点汇总
    手机访问网站自动跳转到手机版
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13538867.html
Copyright © 2011-2022 走看看