首页 > 解决方案 > 使用 Eureka Discovery Server 进行基于 WAR 的微服务注册

问题描述

我们的客户端应用程序之一具有以下架构 -

  1. 基于 Angular 的前端
  2. 基于 Spring Boot 的 Web 应用程序与前端对话
  3. 基于 Spring Boot 的微服务与 Web 应用程序对话
  4. Eureka Discovery 客户端启用 Web 应用程序定位微服务

最近我们遇到了一些问题,希望将其中一个微服务作为应用程序安装在独立的 tomcat 下。使微服务应用程序主类扩展 SpringBootServletInitializer,并将打包更改为战争有助于生成战争工件,并将其部署在 tomcat 上,以及在 Eureka 上注册 - 但它不可用。

当 Web 应用程序通过 Eureka 查找服务并调用任何 API 时,它会失败。即使通过 Postman 或直接在浏览器中调用服务,注册 URL 也会失败。在tomcat下作为Web应用程序公开的微服务似乎无法通过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

部署时,它使用名称data-service向 Eureka Discovery 注册,但 uri 不是到达实例的正确 uri,它恰好类似于

GET http://data-service/query/xxxxx HTTP/1.1

它错过了 Tomcat 端口 8080 和 tomcat 上下文。手动检查uri

http://localhost:8080/data-service/query/xxxxx

确实有效。

标签: javaspringspring-bootmicroservicesnetflix-eureka

解决方案


推荐阅读