Linux中的Spring数据服务器java.net.BindException

Linux中的Spring数据服务器java.net.BindException,linux,spring-data-gemfire,Linux,Spring Data Gemfire,我有一个Spring Boot应用程序,用于启动关键的GemFireCacheServer 当我将文件放入jar并在本地运行时: java -jar gemfire-server-0.0.1-SNAPSHOT.jar 它运行良好,没有问题。服务器正在使用默认属性 spring.data.gemfire.cache.log-level=info spring.data.gemfire.locators=localhost[10334] spring.data.gemfire.cache.ser

我有一个Spring Boot应用程序,用于启动关键的GemFire
CacheServer

当我将文件放入jar并在本地运行时:

java -jar gemfire-server-0.0.1-SNAPSHOT.jar 
它运行良好,没有问题。服务器正在使用默认属性

spring.data.gemfire.cache.log-level=info
spring.data.gemfire.locators=localhost[10334]
spring.data.gemfire.cache.server.port=40404
spring.data.gemfire.name=CacheServer
spring.data.gemfire.cache.server.bind-address=localhost
spring.data.gemfire.cache.server.host-name-for-clients=localhost
如果我将其部署到Centos发行版,并使用相同的脚本运行,但通过“测试”配置文件:

我的测试配置文件
应用程序测试.properties
如下所示:

spring.data.gemfire.cache.server.host-name-for-clients=server.centralus.cloudapp.azure.com
在启动过程中,我可以看到服务器发现定位器已经在主机上运行(我使用Gfsh通过一个单独的进程启动它)

服务器甚至加入集群大约一分钟。但随后由于绑定异常而关闭

我已经检查了这个端口(40404)上是否有任何东西在运行,但没有显示任何东西

编辑

显然,我确实在本地得到了这个异常——只是需要更长的时间

当我在Centos发行版上启动它时,它几乎是即时的。在我的Mac电脑上,进程引发异常大约需要2分钟:

添加更多这方面的图像:

两个bash窗口-左侧在本地监视GF,右侧用于检查端口并启动Java进程:

服务器已添加到群集。请注意16:45:05的时间戳

以下是添加的服务器,它似乎正在运行:

最后,在大约两分钟后发生异常-再次查看异常上的时间戳-16:47:09。服务器已停止并从群集中删除


您是否使用Gfsh启动了其他服务器?也就是说,使用类似于

gfsh>start server --name=ExampleGfshServer --log-level=config
Gfsh将启动
CacheServer
侦听
40404
的默认
CacheServer
端口

你有几个选择

1) 首先,当使用Gfsh启动服务器时,您可以禁用默认的
CacheServer
,例如

gfsh>start server --name=ExampleGfshServer --log-level=config --disable-default-server
2) 或者,您可以在使用Gfsh启动其他服务器时更改
CacheServer
端口

gfsh>start server --name=ExampleGfshServer --log-level=config --server-port=50505
3) 如果要启动Spring Boot的多个实例,则可以在启动时将属性声明为系统属性,从而改变Spring.data.GemFire.cache.server.port的属性

例如,您可以在Spring Boot
应用程序.properties
中执行

#application.properties
...
spring.data.gemfire.cache.server.port=${gemfire.cache.server.port:40404}
然后从命令行启动应用程序时

java -Dgemfire.cache.server.port=48484 -jar ...
当然,您也可以从命令行设置SDG属性

java -Dspring.data.gemfire.cache.server.port=48484 --jar ...
无论如何,我向您保证,您有另一个进程(例如,
CacheServer
)正在运行,其中
ServerSocket
侦听端口
40404
netstat-a | grep40404
应该会给你更好的结果

希望这有帮助

问候,,
约翰

我刚刚检查了两次。在我启动java进程之前,40404上没有运行任何东西。我在上面添加了几个屏幕截图,向您展示我的终端输出。在启动java进程之前,我已经运行了定位器。java进程启动,我看到服务器被添加到集群中。大约需要两分钟(本地)-然后抛出异常。很显然,GemFire尝试在您的Spring Boot GemFire server应用程序中启动
CacheServer
实例后,使用了此端口。在运行Spring Boot应用程序的机器上使用
jps
可能会显示其他JVM进程正在运行。如果您还可以共享您的源代码(作为GitHub repo),那将非常有用。谢谢。注意到您昨天也发布了这个问题()您在测试/实验中是否仍在使用
spring-boot-gemfire服务器示例
app()?你已经修改过这个代码了吗?同样,请与您的代码/分叉共享回购协议。
java -Dspring.data.gemfire.cache.server.port=48484 --jar ...