Одно из наших клиентских приложений имеет следующую архитектуру -
- Угловая основа
- Веб-приложение на основе Spring Boot для связи с внешним интерфейсом
- Микросервисы на основе Spring Boot для общения с веб-приложением
- Клиент Eureka Discovery, позволяющий веб-приложению обнаруживать микросервисы
Недавно мы столкнулись с некоторой проблемой и хотим сделать один из микросервисов установленным в качестве приложения под автономным tomcat. Создание основного класса приложения для микросервиса расширило SpringBootServletInitializer, а изменение упаковки на войну помогло создать артефакт войны и развернуть его на tomcat, а также на Eureka, но не обслуживать.
Когда веб-приложение ищет сервис через Eureka и вызывает любой API, происходит сбой. Даже при вызове сервиса через Postman или непосредственно в браузере происходит сбой для зарегистрированного URL. Похоже, что микросервис при отображении в виде веб-приложения под tomcat не разрешается через Eureka. Есть предложения?
Конфигурация :
Служба данных - будет развернута как война
spring.application.name=data-service
server.contextPath=/data-service
server.servlet.application-display-name=Data Service
spring.main.banner-mode=log
#server.port=9090
spring.jmx.default-domain=${spring.application.name}
eureka.client.service-url.defaultZone=http://localhost:9098/eureka
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.preferSameZoneEureka=true
ribbon.eureka.enabled=true
ribbon.ReadTimeout = 60000
При развертывании он регистрируется в Eureka Discovery с именем data-service , но Uri не является правильным для доступа к экземпляру, это выглядит как
GET http://data-service/query/xxxxx HTTP/1.1
Он пропускает порт Tomcat 8080 и контекст tomcat. Проверка вручную URI
http://localhost:8080/data-service/query/xxxxx
работает.