【问题标题】:Sending a message to HornetQ in one JBoss AS 7 server from a SFSB in another JBoss AS 7从另一个 JBoss AS 7 中的 SFSB 向一个 JBoss AS 7 服务器中的 HornetQ 发送消息
【发布时间】:2013-05-27 16:26:38
【问题描述】:

我很难让它发挥作用。这是我的设置

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

【问题讨论】:

    标签: ejb-3.0 javabeans jboss7.x jndi hornetq


    【解决方案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绑定:

    <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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2012-04-16
      • 1970-01-01
      相关资源
      最近更新 更多