Linux中的Spring数据服务器java.net.BindException
我有一个Spring Boot应用程序,用于启动关键的GemFireLinux中的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
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 ...