`
jjjssh
  • 浏览: 74096 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Feign之坑LInux不支持PostMapping但是windows支持

阅读更多
之前一直在windows上开发,feignClinet写都是按照接口服务的controller那边写的,controller那边用的是postMapping,所以我当时就直接复制到feignClinet的接口上了,在windows上开发调试都没问题,但当部署到测试的linux环境后,奶奶的,一直报错,错误如下:
java.lang.RuntimeException: com.netflix.client.ClientException
        at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:71)
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:97)
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
        at com.sun.proxy.$Proxy113.addLog(Unknown Source)
        at com.skyroam.bsp.security4.gateway.log.LogHandler.run(LogHandler.java:64)
Caused by: com.netflix.client.ClientException
        at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:123)
        at org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:63)
        ... 5 more
Caused by: java.lang.NullPointerException
        at com.netflix.loadbalancer.LoadBalancerContext.reconstructURIWithServer(LoadBalancerContext.java:575)
        at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.reconstructURIWithServer(FeignLoadBalancer.java:105)
        at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:86)
        at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:77)
        at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:286)
        at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:163)
        at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:77)
        at org.springframework.cloud.netflix.feign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:48)
        at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:109)
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303)
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287)
        at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231)
        at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228)
        at rx.Observable.unsafeSubscribe(Observable.java:10211)
        at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
        at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185)
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)
        at rx.Observable.unsafeSubscribe(Observable.java:10211)
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
        at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
        at rx.Observable.unsafeSubscribe(Observable.java:10211)
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127)
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73)
        at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52)
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79)
        at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45)
        at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276)
        at rx.Subscriber.setProducer(Subscriber.java:209)
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138)
        at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
        at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
        at rx.Observable.subscribe(Observable.java:10307)
        at rx.Observable.subscribe(Observable.java:10274)
        at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:445)
        at rx.observables.BlockingObservable.single(BlockingObservable.java:342)
        at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:117)
        ... 6 more


具体是com.netflix.loadbalancer.LoadBalancerContext.reconstructURIWithServer(LoadBalancerContext.java:575) 这里报了空指针,查了源码,且进行了debug,发现这里调了两次,第一次没问题,再进来一次发现575行的host竟然变为空了,这个是在linux的,在windows环境却不为空,能正常通过。
后来听一个同事说,feignClient不能使用PostMapping,GetMapping这些东西,只能用RequestMapping,索性我就改成RequestMapping试了下,麻蛋,竟然好了

没具体看源码,有空再研究研究




分享到:
评论

相关推荐

    糞坑-SpringCloud中使用Feign的坑

    NULL 博文链接:https://b-l-east.iteye.com/blog/2373462

    Feign对Hystrix的支持-代码部分.zip

    Feign对Hystrix的支持-代码部分博文中,优化后的服务消费者和服务提供者,以及Eureka Server、父级工程的源代码

    微服务springcloud之feign使用demo

    除了Feign自带的注解外它还支持JAX-RS注解,SpringCloud又为Feign增加了对SpringMVC注解的支持,同时为了能够使用和Spring Web中默认使用的相同的httpMessageConverter,SpringCloud集成了Ribbon和Eureka,用来在...

    springcloud应用之feign

    springcloud应用之feign

    [享学Feign] 九、Feign + OkHttp和Feign + Apache HttpClient哪个更香?

    Redis作者说到:“灵活性被过分高估–>约束才是解放”。...其实核心模块可以独立的work,但是不免它的能力偏弱,比如只能编码字符串类型、只能解码字符串类型,默认使用java.net.HttpURLConnection作为HC… 本篇将

    SpringCloud之四 负载均衡Feign

    SpringCloud之四 负载均衡Feign,使用Feign进行微服务的负载均衡处理

    11.OpenFeign之feign使用简介

    此外,Feign允许您在诸如Apache HC这样的http库之上编写自己的代码。Feign将你的代码与http API连接起来,通过可定制的解码器和错误处理来将代码与http API连接起来,这些代码可以被写入任何基于文本的http API。

    feign+springboot的使用

    feign+springboot的使用

    手写RPC框架Feign

    了解RPC框架Feign并实现简单RPC框架

    feign-gson-9.5.1

    feign-gson-9.5.1feign-gson-9.5.1 feign-gson-9.5.1feign-gson-9.5.1feign-gson-9.5.1

    feign-form-spring-3.8.0-API文档-中文版.zip

    赠送jar包:feign-form-spring-3.8.0.jar; 赠送原API文档:feign-form-spring-3.8.0-javadoc.jar; 赠送源代码:feign-form-spring-3.8.0-sources.jar; 赠送Maven依赖信息文件:feign-form-spring-3.8.0.pom; ...

    FeignConfig.java

    Spring Cloud Feign的Decoder 在HTTP协议不是很规范的情况下,需要配置Decoder 具体来说:就是返回数据是JSON,而ContentType 为 text/html;charset=UTF-8

    feign以XML格式传输-技术点eureka-feign-jackson.zip

    知识点:feign以XML格式传输,domain通过Jackson转成XML, 项目总体理解:此文档搭建了eureka注册中心,和生产者,以及feign消费者。feign消费者以XML格式传输数据

    feign-core-10.12-API文档-中文版.zip

    赠送jar包:feign-core-10.12.jar; 赠送原API文档:feign-core-10.12-javadoc.jar; 赠送源代码:feign-core-10.12-sources.jar; 赠送Maven依赖信息文件:feign-core-10.12.pom; 包含翻译后的API文档:feign-core...

    istio-fake:高仿feign,支持istio中服务调用,支持异步链路追踪

    项目介绍本项目仿照Feign,旨在istio体系中,快速完成服务间调用,并保持链路追踪。去除了Feign中所有熔断,负载均衡策略,全部由istio控制。demodemo说明servicea提供client,serviceb依赖servicea的client并开启...

    feign-consumer例子

    feign例子,创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定。

    Feign调用401.zip

    我们在使用spring cloud时如果集成了springsecurity,那么应用服务A再调用服务B时使用Feign请求会出现401授权认证的问题,那么解决办法就是在feign调用请求时把token携带过去就可以解决这个问题了,引入资源包中的...

    feign-form-3.8.0-API文档-中文版.zip

    赠送jar包:feign-form-3.8.0.jar; 赠送原API文档:feign-form-3.8.0-javadoc.jar; 赠送源代码:feign-form-3.8.0-sources.jar; 赠送Maven依赖信息文件:feign-form-3.8.0.pom; 包含翻译后的API文档:feign-form...

    feign-core-11.8-API文档-中英对照版.zip

    赠送jar包:feign-core-11.8.jar; 赠送原API文档:feign-core-11.8-javadoc.jar; 赠送源代码:feign-core-11.8-sources.jar; 赠送Maven依赖信息文件:feign-core-11.8.pom; 包含翻译后的API文档:feign-core-...

    spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法

    主要介绍了spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics