我刚刚配置了JBoss WildFly,它正在运行,并且可以从同一台机器访问,一切都正常...
我的问题是它无法从另一个系统(我的意思是在网络中,托管机器的服务器URL无法从另一个系统访问)访问。
我该如何解决这个问题?
默认情况下,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>
<any-ipv4-address/>
在WF 9中已被弃用,请使用:
...
<interface name="management">
<any-address/>
</interface>
...
我为一个有效的解决方案总结了两个答案。
我正在使用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
不要忘记防火墙!
如果您已经解决了绑定地址,但仍无法连接到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
您可以使用-b 0.0.0.0来允许访问,无论分配的公共IP地址如何,例如对于使用DHCP获取动态IP的计算机,我发现这是一种方便的方式。
Eclipse用户:请注意,在服务器配置中,“主机名:”输入用于设置“-b”程序参数,覆盖您的修改!