2016-04-21 10 views
0

Ich beobachte einen ziemlich seltsamen Fehler, wenn NetFlix FeignClient mit einer unter Tomcat bereitgestellten SpringBoot-Eureka-Clientanwendung kommuniziert.FeignClient Ungültiger HTTP-Fehler mit WAR-deployter SpringBoot-Anwendung

Mein Setup:

  1. Eureka Server als Feder Boot-App ausgeführt wird.
  2. SpringBoot App DEMO1 mit @EnableDiscoveryClient unter tomcat als WAR-Datei implementiert und läuft auf http://localhost:8080/DemoApp1-1.0.0/greeting
  3. SpringBoot App DEMO2 (auch ein Heureka-Client) als Feder Boot-App läuft von gradle bootRun @http://localhost:9002

Beide Apps sind auf dem Eureka-Server registriert und zugänglich. DEMO2 hat einen Feignclient, der auf einen REST-Endpunkt auf DEMO1 zeigt.

Obwohl ich den DEMO1 Rest Endpunkt bei http://localhost:8080/DemoApp1-1.0.0/greeting zugreifen kann, die feignclient aus der DEMO2 App schlägt mit der folgenden Ausnahme:

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

Wer hat Ideen dazu?

+0

gelöst stellte sich heraus, dies zu tomcat gebührt 9 keine http-Antwort-Nachricht zu setzen. Tomcat 8 funktioniert wie erwartet. Unterm Strich sind also Tomcat9 und Netflix-Feign nicht kompatibel. Die Klasse feign.Client erwartet neben dem HTTP-Statuscode eine gültige HTTP-Antwortnachricht. Wird einen Fehler für Netflix vorbringen. – 343guiltyspark

Antwort

0

Das Problem wurde mit feign 8.17.0

Verwandte Themen