Spring 使用 Elasticsearch 嵌入式启动在端口 54022 上发生冲突
Spring Boot with Elasticsearch embedded conflicting on port 54022
我正在尝试在我的开发机器上启动两个 spring-boot (1.3.2.RELEASE) 应用程序实例。该应用程序通过 spring 数据 elasticsearch (1.3.2.RELEASE) 使用嵌入的 elasticsearch (1.5.2)。
我将实例配置为使用不同的端口 (-Dserver.port=8081
),这适用于我没有使用 elasticsearch 的其他应用程序。
所以,我的第一个实例正常启动,第二个实例启动我得到
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 54022; nested exception is:
java.net.BindException: Address already in use
我试图从日志中获取更多信息,但没有帮助。
logging.level.org.elasticsearch=TRACE
我什至试过了
logging.level.root=TRACE
没有提到端口 54022。Google 也没有多大帮助。
更新: 我在 STS 中启动我的实例。关闭实例时(控制台视图中的红色方形按钮),我看到 STS 连接到 54022 端口。也许是某种关闭端口?
andrey:~$ lsof -i tcp:54022
STS 447 andrey 36u IPv6 0xf4ba94cfea1e25e5 0t0 TCP localhost:49424->localhost:54022 (CLOSE_WAIT)
此问题特定于 STS IDE(Spring 工具套件)。如果您 运行 来自控制台的应用程序,这将无法重现。
54022 是 JMX Port
的 STS。
要解决此问题,请转到 Run > Run Configurations... > Spring Boot App > <your_run_config> > Spring Boot (Tab)
。
切换Enable Live Bean
支持或更改JMX Port
。
我正在尝试在我的开发机器上启动两个 spring-boot (1.3.2.RELEASE) 应用程序实例。该应用程序通过 spring 数据 elasticsearch (1.3.2.RELEASE) 使用嵌入的 elasticsearch (1.5.2)。
我将实例配置为使用不同的端口 (-Dserver.port=8081
),这适用于我没有使用 elasticsearch 的其他应用程序。
所以,我的第一个实例正常启动,第二个实例启动我得到
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 54022; nested exception is:
java.net.BindException: Address already in use
我试图从日志中获取更多信息,但没有帮助。
logging.level.org.elasticsearch=TRACE
我什至试过了
logging.level.root=TRACE
没有提到端口 54022。Google 也没有多大帮助。
更新: 我在 STS 中启动我的实例。关闭实例时(控制台视图中的红色方形按钮),我看到 STS 连接到 54022 端口。也许是某种关闭端口?
andrey:~$ lsof -i tcp:54022
STS 447 andrey 36u IPv6 0xf4ba94cfea1e25e5 0t0 TCP localhost:49424->localhost:54022 (CLOSE_WAIT)
此问题特定于 STS IDE(Spring 工具套件)。如果您 运行 来自控制台的应用程序,这将无法重现。
54022 是 JMX Port
的 STS。
要解决此问题,请转到 Run > Run Configurations... > Spring Boot App > <your_run_config> > Spring Boot (Tab)
。
切换Enable Live Bean
支持或更改JMX Port
。