Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot WAR部署的SpringBoot应用程序出现佯装客户端无效HTTP错误_Spring Boot_Netflix Eureka_Netflix Feign - Fatal编程技术网

Spring boot WAR部署的SpringBoot应用程序出现佯装客户端无效HTTP错误

Spring boot WAR部署的SpringBoot应用程序出现佯装客户端无效HTTP错误,spring-boot,netflix-eureka,netflix-feign,Spring Boot,Netflix Eureka,Netflix Feign,我发现netflix FaignClient与部署在tomcat下的SpringBoot eureka客户端应用程序WAR通信时出现了一个相当奇怪的故障 我的设置: Eureka服务器作为spring启动应用程序运行 SpringBoot应用程序DEMO1,其中@EnableDiscoveryClient作为WAR文件部署在tomcat下,并在http://localhost:8080/DemoApp1-1.0.0/问候语 SpringBoot应用程序DEMO2(也是一个eureka客户端),作

我发现netflix FaignClient与部署在tomcat下的SpringBoot eureka客户端应用程序WAR通信时出现了一个相当奇怪的故障

我的设置:

  • Eureka服务器作为spring启动应用程序运行
  • SpringBoot应用程序DEMO1,其中@EnableDiscoveryClient作为WAR文件部署在tomcat下,并在
    http://localhost:8080/DemoApp1-1.0.0/问候语
  • SpringBoot应用程序DEMO2(也是一个eureka客户端),作为SpringBoot应用程序从gradle bootRun@
    http://localhost:9002
  • 这两个应用程序都在Eureka服务器上注册,可以访问 DEMO2有一个假客户端指向DEMO1上的REST端点

    尽管我可以在
    http://localhost:8080/DemoApp1-1.0.0/问候语
    ,来自DEMO2应用程序的假装客户端失败,出现以下异常:

    java.io.IOException: Invalid HTTP executing GET http://localhost:8080/DemoApp1-1.0.0/greeting
        at feign.Client$Default.convertResponse(Client.java:157) ~[feign-core-8.16.0.jar:8.16.0]
        at feign.Client$Default.execute(Client.java:74) ~[feign-core-8.16.0.jar:8.16.0]
        at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:77) ~[spring-cloud-netflix-core-1.1.0.RC2.jar:1.1.0.RC2]
        at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:45) ~[spring-cloud-netflix-core-1.1.0.RC2.jar:1.1.0.RC2]
        at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:109) ~[ribbon-loadbalancer-2.1.5.jar:2.1.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303) ~[ribbon-loadbalancer-2.1.5.jar:2.1.5]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287) ~[ribbon-loadbalancer-2.1.5.jar:2.1.5]
        at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:46) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:35) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.Observable$2.call(Observable.java:162) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.Observable$2.call(Observable.java:154) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.Observable$2.call(Observable.java:162) ~[rxjava-1.0.14.jar:1.0.14]
        at rx.Observable$2.call(Observable.java:154) ~[rxjava-1.0.14.jar:1.0.14]
    ...
    

    有人对此有想法吗?

    问题已经用Faign 8.17.0解决了

    问题已经用Faign 8.17.0解决了

    结果表明这是因为tomcat 9没有设置http响应消息。Tomcat8按预期工作。因此,Tomcat9和netflix的底线是不兼容的。客户机类除了http状态代码之外,还需要一个有效的http响应消息。将引发netflix Faign的错误。结果表明,这是由于tomcat 9未设置http响应消息。Tomcat8按预期工作。因此,Tomcat9和netflix的底线是不兼容的。客户机类除了http状态代码之外,还需要一个有效的http响应消息。将为netflix Faign引发一个bug。