`
jjjssh
  • 浏览: 77728 次
  • 性别: 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的坑

    Feign默认不支持MultipartFile,因此在尝试传递文件时可能会出现异常。 解决这个问题的一种方法是扩展Feign的默认配置,添加对MultipartFile的支持。我们可以通过自定义`FeignClient`配置类来实现。例如,创建一个`...

    手写RPC框架Feign

    2. **插件支持**:Feign支持多种插件,如Hystrix(用于服务降级和熔断)、Ribbon(负载均衡器)以及Zuul(API网关)。这些插件可以无缝集成到Feign中,为微服务架构提供更强大的功能。 3. **模板化调用**:Feign...

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

    在"Feign对Hystrix的支持-代码部分"的项目中,我们可以看到以下几个关键的知识点: 1. **Feign的基本使用**:Feign通过接口定义了服务调用的方式,使用注解来指定HTTP请求的方法、URL、参数等信息。开发者只需要...

    微服务springcloud之feign使用demo

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

    feign-consumer例子

    - Feign支持插件系统,可以通过实现`feign.codec.Decoder`和`feign.codec.Encoder`接口来自定义编码和解码逻辑。 - 也可以通过实现`feign.Contract`接口来自定义接口方法到HTTP请求的映射规则。 总结来说,"feign...

    springcloud应用之feign

    综上所述,Spring Cloud Feign是构建分布式系统中不可或缺的一部分,它与Ribbon和Eureka的协作,为微服务架构提供了便捷、高效的服务调用方式,极大地简化了服务间的通信复杂性。在实际项目中,合理利用这些组件,...

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

    Feign默认支持JSON格式的数据传输,但在这里,我们需要扩展其功能,使其支持XML。这就涉及到了Jackson库,Jackson是Java中广泛使用的JSON处理库,但它也可以处理XML。为了将Java对象转换为XML,我们需要引入`jackson...

    SpringCloud之四 负载均衡Feign

    2. **注解支持**:Feign支持使用Feign自身定义的注解以及JAX-RS的注解,这为开发者提供了灵活性。 3. **插件式架构**:Feign支持插件式编码器和解码器,这意味着用户可以根据需求选择合适的编解码器处理HTTP消息。 4...

    SpringCloud之Feign

    【SpringCloud之Feign】是Spring Cloud生态体系中一个重要的组件,主要用于服务间的调用,实现了声明式的服务调用,极大地简化了微服务之间的通信。Feign基于Netflix Hystrix进行了整合,支持服务熔断,提高了系统的...

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

    spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法 spring cloud feign是一种基于HTTP的服务调用方式,而在使用spring cloud feign时,我们可能会遇到不支持@RequestBody+ RequestMethod.GET...

    feign+springboot的使用

    Feign + Spring Boot 的使用 Feign 是一个声明式的 Web 服务客户端,它可以使得 Web 服务客户端的写入更加方便。Feign 结合 Eureka 注册中心,把不同的服务项目注册到 Eureka 中,通过 Feign 客户端进行调用,可以...

    Spring Boot与Feign:微服务架构下的优雅通信

    ### Spring Boot与Feign:微服务架构下的优雅通信 #### 一、前言 ...Feign的强大之处不仅在于其本身的简洁性,还在于其与Spring Cloud生态系统的紧密集成,使得开发人员能够快速构建出健壮且灵活的分布式系统。

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

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

    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...

    spring cloud feign实现远程调用服务传输文件的方法

    Spring Cloud Feign 是 Spring Cloud 中的一个子项目,提供了对 Feign 的支持。它使得开发者可以使用 Spring Boot 应用程序来调用远程服务,提供了一种简单、可靠的方式来实现微服务之间的调用。 实践案例 我们的...

    Feign的使用案例

    另外,Feign还支持Hystrix断路器,可以在服务不可用时提供保护,避免服务雪崩。 这个"Feigndemo02"可能包含了实现以上功能的示例代码,包括服务提供者和服务消费者端的配置、接口定义以及实际调用。通过分析这些...

    spring cloud feign demo

    - **OpenFeign**:Spring Cloud 对 Feign 进行了封装,增加了更多的功能,如支持 Spring MVC 风格的注解,以及支持 Spring Cloud Config。 6. **示例代码** ```java @FeignClient(name = "service-provider") ...

    feign之间相互通信RequestInterceptor拦截器失效相关代码

    Feign是Spring Cloud框架中的一个组件,用于实现声明式的REST客户端。它允许开发者定义接口,然后Feign会根据这些接口自动生成实现,使得调用远程服务就像调用本地方法一样简单。然而,在某些情况下,当两个Feign...

    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...

    springcloud feign 服务消费者 类似 webservice

    Spring Cloud Feign是Spring Cloud生态系统中的一个组件,它作为一个声明式的服务调用客户端,使得编写Web服务客户端变得简单。Feign的设计灵感来源于Netflix的Feign库,它的主要目的是简化微服务之间的通信,使得...

Global site tag (gtag.js) - Google Analytics