JBoss WildFly:启动但无法连接?

42

我刚刚配置了JBoss WildFly,它正在运行,并且可以从同一台机器访问,一切都正常...

我的问题是它无法从另一个系统(我的意思是在网络中,托管机器的服务器URL无法从另一个系统访问)访问。

我该如何解决这个问题?

5个回答

64

默认情况下,jboss/wildfly绑定到本地主机,如果您想更改此设置,可以执行:

standalone.sh -b 0.0.0.0

监听机器的所有IP地址(如果有多个网卡)

另一种选择是在standalone.xml文件中配置接口部分。

更改:

<interfaces>
  <interface name="management">
   <inet-address value="127.0.0.1"/>
  </interface>
  <interface name="public">
   <inet-address value="127.0.0.1"/>
  </interface>
</interfaces>

致:

<interfaces>
  <interface name="management">
   <!-- Use the IPv4 wildcard address -->
   <any-ipv4-address/>
  </interface>
  <interface name="public">
   <!-- Use the IPv4 wildcard address -->
   <any-ipv4-address/>
  </interface>
</interfaces>

参考文献:

更新

从 Wildfly 8 开始,<any-ipv4-address/>废弃并在 Wildfly 9 中删除,因此如果您使用的是 9.x 或更高版本,请改用 <any-address/>

已废弃。在没有使用 -Djava.net.preferIPv4Stack=true 的情况下,JVM 无法指示将套接字绑定到所有 IPv4 地址,而只能绑定到 IPv4 地址,因此只通过此设置无法获得预期的语义。由于使用 any-address 类型 并设置 -Djava.net.preferIPv4Stack=true 具有相同的效果,因此将来发布时将删除该 any-ipv4-address 类型

例如:

<interface name="global">
   <!-- Use the wildcard address -->
   <any-address/>
</interface>

2
感谢您!对于Wildfly 9.0.1中的standalone.xml文件,其内容如下: <inet-address value="${jboss.bind.address.management:put.your.ip.here}"/> <inet-address value="${jboss.bind.address:put.your.ip.here}"/> - Joand
这种方法在Wildfly 9.0.2+上已经不再适用。请参见@bkomac的答案。 - Stefan Haberl
很棒的更新,任意地址正是我所需要的。 - keni

22

<any-ipv4-address/>在WF 9中已被弃用,请使用:

 ...   
    <interface name="management">
       <any-address/>
    </interface>
 ...

2
自从9.0.2版本以后,'<any-ipv4-address/>'在启动wildfly时会产生错误... :-o - Steffen

4

我为一个有效的解决方案总结了两个答案。

我正在使用WildFly 10.0.0.Final - 这是编写时的最新版本。请查找类似这样的文件standalone.xml

在Windows上:

C:\tools\wildfly-10.0.0.Final\standalone\configuration\standalone.xml

或者像这样的 Linux:

/home/vyhn.net/wildfly-servlet-10.0.0.Final/standalone/configuration/standalone.xml

编辑变成:

<interfaces>
    <interface name="management">
        <!-- Allow all external IP -->
        <any-address/>
    </interface>
    <interface name="public">
        <!-- Allow all external IP -->
    <any-address/>
    </interface>
</interfaces>

然后前往:

http://your_domain:9990/error/index.html

(端口9990是默认的HTTP端口,如果您使用防火墙或iptables,请记得打开端口9990。)例如:

http://vyhn.net:9990/error/index.html

您将看到它成功地工作。
最新参考(WildFly 10):https://docs.jboss.org/author/display/WFLY10/Interfaces+and+ports


3

不要忘记防火墙!

如果您已经解决了绑定地址,但仍无法连接到JBoss,请尝试绕过服务器的防火墙。

在Linux RHEL上停止防火墙,请使用以下命令:

/etc/init.d/iptables stop

更新(2018年4月):

在使用firewalld(而不是iptables)的RHEL7上,您可以使用以下命令:

systemctl stop firewalld

或者使用以下两个命令打开特定的Jboss/Wildfly端口(例如8080/9990):

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

0

您可以使用-b 0.0.0.0来允许访问,无论分配的公共IP地址如何,例如对于使用DHCP获取动态IP的计算机,我发现这是一种方便的方式。

Eclipse用户:请注意,在服务器配置中,“主机名:”输入用于设置“-b”程序参数,覆盖您的修改!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接