什么应该是jboss.bind.address应该在运行jboss实例时?

时间:2015-03-13 05:10:08

标签: jboss jboss7.x jboss6.x

我们的一个Web项目配置为在JBoss EAP 6.上运行在我们的开发机器中,我设置了

jboss.bind.address=192.168.XX.X (This is the IP of the machine I run JBOSS)
jboss.bind.address.management=192.168.XX.X

我应该为我的本地开发盒做些什么。 我尝试了以下方法:

127.0.0.1
192.168.YY.YY (This is the ip address of my computer when I execute `ifconfig`)
0.0.0.0

我在本地方框中尝试了以上所有内容。我发现127.0.0.1192.168.YY.YY没有任何错误。但是0.0.0.0会抛出错误。

我完全不明白如何使用这个jboss.bind.address和jboss.bind.address.management。

blog提及

您可以使用以下命令将应用程序服务器公共接口绑定到其他IP地址: standalone.sh -Djboss.bind.address = 192.168.0.1

但我不明白这种约束意味着什么?我也试着查看JBoss文档。但我不太明白这个地址的目的是什么。

Mar 12 21:52:19 local7:2015-03-13 04: 52:19,463 INFO  [ServerService Thread Pool -- 76] [stdout] GMS: address=0.0.0.0/singleton, cluster=singleton, physical address=0.0.0.0:55200
Mar 12 21:52:19 local7:2015-03-13 04: 52:19,463 INFO  [ServerService Thread Pool -- 76] [stdout] -------------------------------------------------------------------
Mar 12 21:52:19 local7:2015-03-13 04: 52:19,466 ERROR [ServerService Thread Pool -- 76] [fail] MSC000001: Failed to start service jboss.infinispan.singleton.global-component-registry: org.jboss.msc.service.StartException in service jboss.infinispan.singleton.global-component-registry: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
Mar 12 21:52:19 ...chronousService.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
        at org.jboss.threads.JBossThread.run(JBossThread.java:122)
    Caused by: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
Mar 12 21:52:19 ...ories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:247)
        at org.jboss.as.clustering.infinispan.subsystem.GlobalComponentRegistryService.start(GlobalComponentRegistryService.java: 57)
        at org.jboss.as.clustering.msc.AsynchronousService$1.run(AsynchronousService.java:86)
        ... 4 more
    Caused by: org.infinispan.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport
        at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:205)
Mar 12 21:52:19 ...t org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java: 886)
        at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:657)
        at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:646)
        at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:549)
        at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:225)
        ... 6 more
Mar 12 21:52:19 ...cheException: Unable to start JGroups Channel
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java: 209)
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:198)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
Mar 12 21:52:19 ...nfinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:203)
        ... 11 more
    Caused by: java.lang.Exception: connecting to channel "null" failed
        at org.jgroups.JChannel._connect(JChannel.java:542)
        at org.jgroups.JChannel.connect(JChannel.java:283)
        at org.jgroups.JChannel.connect(JChannel.java:268)
        at org.infinispan.remoting.transport.jgroups.JGroupsTransport.startJGroupsChannelIfNeeded(JGroupsTransport.java:207)
        ... 17 more
    Caused by: java.lang.IllegalArgumentException: failed to start server socket
Mar 12 21:52:19 ..._SOCK.java:308)
        at org.jgroups.protocols.FD.down(FD.java: 290)
        at org.jgroups.protocols.VERIFY_SUSPECT.down(VERIFY_SUSPECT.java:84)
        at org.jgroups.protocols.pbcast.NAKACK.down(NAKACK.java:569)
        at org.jgroups.protocols.UNICAST2.down(UNICAST2.java:544)
        at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:329)
        at org.jgroups.protocols.pbcast.GMS.down(GMS.java:931)
        at org.jgroups.protocols.FlowControl.down(FlowControl.java:351)
        at org.jgroups.protocols.FlowControl.down(FlowControl.java:351)
        at org.jgroups.protocols.FRAG2.down(FRAG2.java:147)
Mar 12 21:52:19 ...org.jgroups.protocols.RSVP.down(RSVP.java:143)
        at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java: 1030)
        at org.jgroups.JChannel.down(JChannel.java:722)
        at org.jgroups.JChannel._connect(JChannel.java:536)
        ... 20 more
    Caused by: java.net.BindException: bind_addr /0.0.0.0 is not a valid interface: java.net.BindException: Address already in use
        at org.jgroups.util.Util.createServerSocket(Util.java:3404)
        at org.jgroups.protocols.FD_SOCK.startServerSocket(FD_SOCK.java:568)
        at org.jgroups.prot

1 个答案:

答案 0 :(得分:1)

问题在于:

java.net.BindException: Address already in use

绑定到0.0.0.0时,您将绑定到主机上的所有IP地址。如果还有其他东西绑定到JBoss在任何IP地址上使用的其中一个端口,您将看到此错误。

JBoss绑定到端口,以便与端口的任何连接都定向到JBoss。如果有另一个进程已经在监听端口,则端口被锁定到另一个进程,JBoss无法绑定它。

管理IP地址和端口用于管理JBoss配置,而jboss.bind.address用于最终用户访问。管理地址通常设置为内部IP地址,该IP地址可能位于生产环境中的不同接口上(例如,后端接口)。

上述错误与jgroups管理端口有关...

    <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
    <socket-binding name="jgroups-tcp" port="7600"/>
    <socket-binding name="jgroups-tcp-fd" port="57600"/>
    <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
    <socket-binding name="jgroups-udp-fd" port="54200"/>

检查您机器上的其他进程是否已打开其中一个端口(可能是另一个JBoss实例?)

您也可以使用偏移启动jboss,因此所有端口都会增加您指定的偏移量。例如,如果你用

启动jboss
-Djboss.socket.binding.port-offset=100

然后端口8080变为8180,依此类推。这可以防止端口冲突。或者只是使用特定的(否则未使用的)IP地址进行管理 - 这实际上取决于您的环境。