我尝试在linux系统中运行* .sh文件,这个* .sh文件用于启动Java Application.this应用程序使用gemfire作为其分布式缓存系统。似乎我无法建立一个新的宝石的TCP连接。有没有人知道如何解决这个问题?
这是例外:
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:437)
at sun.nio.ch.Net.bind(Net.java:429)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl.<init>(AcceptorImpl.java:378)
at com.gemstone.gemfire.internal.cache.BridgeServerImpl.start(BridgeServerImpl.java:297)
at spark.cache.CacheServicePoint.enableServer(CacheServicePoint.java:197)
at orion.di.service.profile.ProfileService.initialize(ProfileService.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
答案 0 :(得分:0)
已在使用的地址是您的应用程序实例已在同一端口上运行/侦听。如果您是ubuntu用户
netstat -tulpn | grep YOURAPPNAME
这将为您提供在系统中运行实例的ProcessId。找到进程ID号并终止实例并再次启动应用程序。 要杀了
kill -9 PROCESSID
答案 1 :(得分:0)
您是否在同一个盒子上启动了Java应用程序的两个进程?默认情况下,GemFire服务器在40404上打开一个端口来侦听客户端连接,因此当您在同一个盒子上启动两个以上的服务器时,第二个服务器会收到Address already in use
异常。查看用于启动应用程序的脚本。您需要为您尝试启动的每个GemFire服务器提供不同的端口。使用GemFireShell即gfsh
,可以这样做:
gfsh>start server --name=server1 --server-port=4045
或者,如果没有客户端(即GemFire的点对点部署),您可以禁用对客户端的监听:
gfsh>start server --name=server1 --disable-default-server