用于远程JMS MDB的JBoss EAP 6.2 any-address和Netty

时间:2014-07-03 15:45:57

标签: java jboss jms jboss7.x netty

我正在运行JBoss EAP 6.2(嵌入式HornetQ 2.3.12.Final)作为独立邮件服务器,它将托管JMS队列和主题。

将有其他JBoss服务器远程连接到Messaging Server的队列和主题。

使用此Stackoverflow答案:Binding JBoss AS 7 to all interfaces

我对standalone-full.xml配置进行了以下更改:

<interfaces>
    ...
    <interface name="public">     
<!--<inet-address value="${jboss.bind.address:127.0.0.1}"/>-->
        <any-address/>
    </interface>
</interfaces>

进行此更改后,我可以通过端口4447(JBoss Remoting)成功连接其他JBoss服务器并编写JMS客户端代码(ConnectionFactory,Connection,MessageProducer等)。

JBoss日志有以下内容,令人放心:

[org.jboss.as.remoting] (MSC service thread 1-3) JBAS017100: 
Listening on 0.0.0.0:4447

但是,我无法通过远程MDB连接。 :-(我需要解决这个问题,因为我们做的是MDB而不是JMS客户端代码。

我查看了JBoss日志,并看到以下错误

HQ121005: Invalid "host" value "0.0.0.0" detected for "netty" connector. 
Switching to "ptenn-fc20.arbfile.org". If this new address is incorrect please 
manually configure the connector to use the proper one.

我浏览了<subsystem xmlns="urn:jboss:domain:messaging:1.4"><hornetq-server> ...部分,没有看到任何关于如何为“netty”连接器指定其他地址的内容。

Netty似乎正在使用我指定的公共接口,我很困惑为什么JBoss Remoting(在端口4447上)可以很好地监听0.0.0.0,但是Netty(在端口5445上)不是。

如果有人有任何想法,见解或建议,我会非常感激。 : - )

谢谢,

菲利普

1 个答案:

答案 0 :(得分:1)

菲利普,

主机是通过standalone-full-ha.xml的接口元素指定的。

然后在同一配置文件的socket-bindings元素中引用该接口。

e.g。下面的示例将JMS绑定到特定的IP地址,不再是0.0.0.0 ...

<interfaces>
    <interface name="management">
        <!--<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>-->
        <inet-address value="0.0.0.0"/>
    </interface>
    <interface name="public">
        <inet-address value="0.0.0.0"/>
        <!--just an FYI that we can use the following syntax too-->
        <!--<any-address/>-->
    </interface>
    <interface name="jms">  <-- HERE
        <inet-address value="${jboss.bind.address}"/>
    </interface>
    <!-- TODO - only show this if the jacorb subsystem is added  -->
    <interface name="unsecure">
        <!--
          ~  Used for IIOP sockets in the standard configuration.
          ~                  To secure JacORB you need to setup SSL 
          -->
        <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
    </interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    .
    .
    .

    <!--JMS-->
    <socket-binding name="messaging" port="5445" interface="jms"/>  <-- HERE
    .
    .
    .
</socket-binding-group>

罗布