FeignClient Недопустимая ошибка HTTP с приложением SpringBoot, развернутым в WAR

Я наблюдаю довольно странный сбой при взаимодействии netflix FeignClient с клиентским приложением SpringBoot eureka, развернутым под управлением tomcat.

Моя настройка:

  1. Eureka Server работает как приложение для весенней загрузки.
  2. Приложение SpringBoot DEMO1 с @EnableDiscoveryClient, развернутое под tomcat как WAR-файл и работающее на http://localhost:8080/DemoApp1-1.0.0/greeting
  3. Приложение SpringBoot DEMO2 (также клиент eureka), работающее как приложение для весенней загрузки из gradle bootRun @ http://localhost:9002

Оба приложения зарегистрированы на сервере Eureka и доступны. DEMO2 имеет фиктивный клиент, указывающий на конечную точку REST на DEMO1.

Хотя я могу получить доступ к конечной точке отдыха DEMO1 в http://localhost:8080/DemoApp1-1.0.0/greeting, feignclient из приложения 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]
...

У кого-нибудь есть идеи по этому поводу?


person 343guiltyspark    schedule 21.04.2016    source источник
comment
Оказывается, это связано с тем, что tomcat 9 не устанавливает ответное сообщение http. Tomcat 8 работает как положено. Таким образом, Tomcat9 и netflix-feign несовместимы. Класс feign.Client ожидает действительное сообщение ответа http в дополнение к коду состояния http. Поднимет ошибку для притворства netflix.   -  person 343guiltyspark    schedule 22.04.2016


Ответы (1)


Проблема решена с помощью fign 8.17.0.

person Fabrizio Fortino    schedule 30.07.2016