java - 使用 Eureka Discovery Server 进行基于 WAR 的微服务注册
问题描述
我们的客户端应用程序之一具有以下架构 -
- 基于 Angular 的前端
- 基于 Spring Boot 的 Web 应用程序与前端对话
- 基于 Spring Boot 的微服务与 Web 应用程序对话
- 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
确实有效。
解决方案
推荐阅读
- python - 是否可以通过字典传递条件?
- json - 如何使用 Angular 中的 typescript 获取 json 中特定嵌套节点的计数?
- python - 我的嵌套列表总是添加一个空字符串
- mediawiki - 为单独的项目/产品内容页面使用命名空间
- javascript - 可以用 ReactJS 中的 prop 值替换 API 调用的一部分吗?
- python - Pandas Excel 合并单元格
- django - AWS Lambda 函数中的 Django ORM
- github - 有没有办法在 Github 中搜索 PDF 资源中的特定文本
- amazon-web-services - 首次登录时的 AWS 访问/密钥
- reactjs - 从 switch 语句中渲染两个组件 react