Closed
Description
版本:spring-cloud-alibaba-2.1.0.RELEASE
Sentinel 和 Feign 集成时,方法名称写错,有如下接口:
List<MethodMetadata> feign.Contract.parseAndValidateMetadata(Class<?> targetType);
在 spring-cloud-alibaba-sentinel-2.1.0.RELEASE.jar 中,实现了上述方法,不过方法名却写错了,导致目前无法使用,实现方法如下:
List<MethodMetadata> com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidatateMetadata(Class<?> targetType);
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
sczyh30 commentedon Mar 18, 2020
Could you please provide the detailed error message?
carCV commentedon Mar 18, 2020
当我在集成 Sentinel 和 Feign 时,运行github上的示例代码,代码地址如下:
https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/controller/TestController.java
遇到了类似于上述的问题,具体问题日志如下:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'echoController': Unsatisfied dependency expressed through field 'echoService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.jmlee.hello.sentinel.feign.service.EchoService': FactoryBean threw exception on object creation; nested exception is java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;
所用版本:
Spring Cloud Version:Hoxton.SR3
Spring Cloud Alibaba Version:2.2.0.RELEASE
sczyh30 commentedon Mar 18, 2020
@fangjian0423 Could you please take a look?
herodotus-ecosystem commentedon Mar 20, 2020
Hoxton.SR1 中,fegin.context接口的定义为parseAndValidatateMetadata
Hoxton.SR3 中,fegin.context接口的定义为parseAndValidateMetadata。就是之前版本中定义的方法名拼写错误,所以在Hoxton.SR1后面的版本更正过来,所以出现Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;错误。
我目前的解决办法是:在工程合适的地方,新建包com.alibaba.cloud.sentinel.feign。重新修改一下SentinelContractHolder即可
`
public class SentinelContractHolder implements Contract {
}
`
cdfive commentedon Mar 20, 2020
By reproducing it, I found two ways to solve this:
Change Spring Cloud Version from
Hoxton.SR3
toHoxton.RELEASE
Remain using
Hoxton.SR3
, and specified the version ofspring-cloud-openfeign-dependencies
to2.2.0.RELEASE
.Note that the
spring-cloud-openfeign-dependencies
should be in front ofspring-cloud-dependencies
.The reason is as @pointerv described.
dsaewq321 commentedon Mar 21, 2020
dsaewq321 commentedon Mar 21, 2020
fanqisoft commentedon Mar 24, 2020
碰到了相同的问题,谢谢
stalary commentedon Mar 24, 2020
碰到了同样的问题,多谢
fangjian0423 commentedon Mar 25, 2020
Spring Cloud Alibaba 2.2.0.RELEASE based on Hoxton.RELEASE.
Spring Cloud Alibaba 2.2.1.RELEASE based on Hoxton.SR3 and it's going to release soon.
sczyh30 commentedon Apr 17, 2020
Closing this issue as SCA 2.2.1.RELEASE has been released. Thanks all :)
MemoryF commentedon May 13, 2020
Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidatateMetadata(Ljava/lang/Class;)Ljava/util/List;
at feign.ReflectiveFeign$ParseHandlersByName.apply(ReflectiveFeign.java:154) ~[feign-core-10.4.0.jar:na]
at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:52) ~[feign-core-10.4.0.jar:na]
at feign.Feign$Builder.target(Feign.java:251) ~[feign-core-10.4.0.jar:na]
at org.springframework.cloud.openfeign.HystrixTargeter.target(HystrixTargeter.java:38) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:243) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:272) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:252) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 48 common frames omitted
Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidatateMetadata(Ljava/lang/Class;)Ljava/util/List;
at feign.ReflectiveFeign$ParseHandlersByName.apply(ReflectiveFeign.java:154) ~[feign-core-10.4.0.jar:na]
at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:52) ~[feign-core-10.4.0.jar:na]
at feign.Feign$Builder.target(Feign.java:251) ~[feign-core-10.4.0.jar:na]
at org.springframework.cloud.openfeign.HystrixTargeter.target(HystrixTargeter.java:38) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:243) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:272) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:252) ~[spring-cloud-openfeign-core-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:171) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
... 48 common frames omitted
MemoryF commentedon May 13, 2020
2.2.1.RELEASE Hoxton.SR3 可以适配了。但是要去中央仓库下载Hoxton.SR3 阿里云仓库还没有
fix /dev/shm not found on some OSs (alibaba#1345)
[RIP-15]Add Ipv6 support for RocketMQ (alibaba#1352)