已经在使用的地址' com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl中抛出异常

时间:2015-10-21 05:07:42

标签: jvm gemfire

我尝试在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)

2 个答案:

答案 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