从远程和本地 JBoss 7 访问服务

从远程和本地 JBoss 7 访问服务

我在一台 Suse Linux 机器上有两个不同的服务器(即端口 8082 上的 tomcat 和端口 9080 上的 jboss)。第一个服务器是前段时间安装的,第二个服务器是最近才安装的。现在我无法从另一台机器访问第二个服务器。

如果我查看 netstat 输出,会发现一个区别:

user@server:/etc> netstat -l -n|grep 8082
tcp 0 0 :::8082 :::* LISTEN
ser@server:/etc> netstat -l -n|grep 9080
tcp 0 0 127.0.0.1:9080 0.0.0.0:* LISTEN

看来 9080 服务器被限制为 127.0.0.1,而第一个服务器有 :::。

更新:

我将 standalone.xml 配置文件从

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

<interface name="public">
    <any-address />
</interface>

但是当我调用 netstat 时仍然存在差异,并且仍然无法从远程连接到服务器:

netstat -l -n |grep 9080
tcp        0      0 0.0.0.0:9080            0.0.0.0:*               LISTEN

这种差异源于何处,这种差异的语义是什么?

答案1

JBoss 4.2 及更高版本默认仅监听本地主机,您需要将 -b 0.0.0.0 添加到 run.sh 启动器(初始化脚本等)以使其监听所有可用接口。

答案2

在我工作的地方,我们像这样配置我们的 JBoss AS 7:

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

其中 '...' 是安装 JBoss AS 7 的机器的实际 IP 或主机名。到目前为止运行正常,没有问题 - 您的问题到底出在哪里?

答案3

如果它对您不起作用,请尝试检查 iptables。(sudo iptables -F暂时删除所有规则,以便您可以检查 iptables 是否阻止您的通信)。

检查 JBoss 是否正在监听:sudo netstat -tlnp
列出 iptables 规则:sudo iptables -L -n

答案4

也许你的套接字绑定到了 IPv6,请尝试使用 any-ipv4-address 元素

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

        <!-- IPv4 -->
        <interface name="any">
            <any-ipv4-address/>
        </interface>
</interfaces>

您也可以尝试使用any套接字绑定组中的接口

<socket-binding-group name="standard-sockets" default-interface="any">

相关内容