1

我很难让这个工作。这是我的设置

Server1 - JBoss AS 7.1 - Bean1、Bean2(有状态会话 bean)

Server2 - JBoss AS 7.1 - HornetQ,MDB1

这个想法是从 Bean1 向 Server2 上的 HornetQ 发送消息。我简直不敢相信有这么难。我已经在阳光下尝试了所有方法,但它不起作用。我看到的基本问题是我在 Bean1 中执行的 JNDI 查找指向的是 Server1 而不是 Server2。因此,当我查找队列时,我得到了一个未找到队列的异常。我还尝试使用指向 Server2 的 -b 选项启动 AS。如何从 Server1/Bean1 对 Server2/HornetQ 进行 JNDI 查找?

但是,我能够从独立的控制台应用程序向同一个队列发送消息(这与 JBoss AS 7 完全无关)。当我从控制台应用程序执行 JNDI 查找时,它工作得非常好。

TIA

4

1 回答 1

1

选项1:

您必须从远程 JNDI 进行查找。

我不确定 ATM 如何指定 jndiProps.setProperty(Context.PROVIDER_URL, "127.0.0.1:4447"); 在 JNDI 属性之一中。

选项 2:

您可以创建一个绑定到远程服务器的本地池连接工厂:

首先指定一个连接器:

<connectors>
     <netty-connector name="remote-jms" socket-binding="messaging-remote"/>
   ...   
</connectors>

并指定套接字绑定:

<socket-binding-group ....>
....
    <outbound-socket-binding name="remote-jms">
        <remote-destination host="other-hos" port="5445"/>
    </outbound-socket-binding>
</socket-binding-group>

然后指定将远程连接的池连接工厂。

<pooled-connection-factory name="ConnectionFactory1">
     <user>jmsuser</user>
     <password>jmspassword</password>
     <connectors>
          <connector-ref connector-name="remote-jms" />
     </connectors>
     <entries>
          <entry name="java:/ConnectionFactory1" />
     </entries>
</pooled-connection-factory>

选项 3:

在不使用 JNDI 的情况下创建连接工厂。请注意,您将在每次连接时执行网络调用。最好的办法是建立一个连接:

http://docs.jboss.org/hornetq/2.3.0.Final/docs/user-manual/html/using-jms.html#d0e1361

于 2013-05-29T16:30:02.000 回答