【问题标题】:Spring boot microservices doesn't work with Intelij IDEASpring Boot 微服务不适用于 Intellij IDEA
【发布时间】:2020-04-23 03:27:39
【问题描述】:
我正在使用 intelij IDEA 创建一个 Spring Boot 微服务项目。
目前我已经开发了三个独立的spring boot rest服务,分别是客户服务、车辆服务和spring cloud config server。 Spring cloud config server 指向一个 github 存储库。
问题是有时上述项目需要超过 10 分钟才能运行,有时无法运行并给出错误消息 “未能检查应用程序就绪状态 intellij 未找到 vm 附加提供程序”。我不知道为什么会这样?
【问题讨论】:
标签:
spring-boot
intellij-idea
microservices
spring-cloud-netflix
spring-cloud-config
【解决方案1】:
有两种可能的原因:
1。 IntelliJ IDEA 和 Spring 应用程序在不同的 JVM 中运行。
IntelliJ IDEA 存在一个错误:
https://youtrack.jetbrains.com/issue/IDEA-210665
这里是简短的总结:
IntelliJ IDEA 默认使用本地 JMX 连接器来检索 Spring Boot 执行器端点的数据。但是,如果 Spring Boot 应用程序和 IntelliJ IDEA 由不同的 JVM 运行,则可能无法通过附加 api 获取本地 JMX 连接器地址。在这种情况下,将以下行添加到 Spring Boot 运行配置的 VM 选项中:
-Dcom.sun.management.jmxremote.port={some_port}
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
正如 Oracle 官方文档中提到的,这种配置是不安全的。任何知道(或猜测)您的端口号和主机名的远程用户都将能够监视和控制您的 Java 应用程序和平台。
2。检索本地主机名的时间延长
您可以使用inetTester 查看该时间。通常只需几毫秒即可完成。如果需要很长时间,您可以将 inetTester 返回的主机名添加到 /etc/hosts 文件中,如下所示:
127.0.0.1 localhost winsky
::1 localhost winsky