3

我第一次尝试 Apache Tomee (1.5 plus),我现在完全被困住了。

我工作的公司有一个应用程序(使用 JBoss 和 HornetQ)向 JMS 主题 topic/theTopicsName 发送消息。

我正在尝试使用订阅所述主题的 Tomee/ActiveMQ 实现另一项服务,通常从另一台计算机处理 MDB 中的消息,但除了 localhost 之外,我无法让它监听。

如果我理解正确,应该可以添加类似

<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
    BrokerXmlConfig =
    ServerUrl       =  tcp://thehostname:5455
</Resource>

<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
    ResourceAdapter = MyJmsResourceAdapter
</Resource>

在我的 /conf/tomee.xml

问题是如何让我的 MDB 使用上述设置?是否可以通过注释或ejb-jar.xml?

假设我有一个简单的 MDB

public class MessageListenerMDB implements MessageListener {

    private ConnectionFactory connectionFactory;

    public MessageListenerMDB() {}

    public void onMessage(Message message) {
        //print message
    }
}

我的 */WEB_INF/ejb-jar.xml 看起来像

<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" metadata-complete="true">
  <enterprise-beans>
    <message-driven>
      <ejb-name>MessageListenerMDB</ejb-name>
      <ejb-class>my.package.jms.MessageListenerMDB</ejb-class>
      <messaging-type>javax.jms.MessageListener</messaging-type>
      <activation-config>
        <activation-config-property>
          <activation-config-property-name>
            destinationType
          </activation-config-property-name>
          <activation-config-property-value>
            javax.jms.Topic
          </activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
          <activation-config-property-name>
            destination
          </activation-config-property-name>
          <activation-config-property-value>
            /topic/theTopicsName
          </activation-config-property-value>
        </activation-config-property>
      </activation-config>

      <resource-ref>
        <res-ref-name>
          java:comp/env/my.package.jms.MessageListenerMDB/connectionFactory
        </res-ref-name>
        <res-type>javax.jms.ConnectionFactory</res-type>
        <injection-target>
          <injection-target-class>
            my.package.jms.MessageListenerMDB
          </injection-target-class>
        <injection-target-name>connectionFactory</injection-target-name>
      </injection-target>
    </resource-ref>

    </message-driven>
  </enterprise-beans>
</ejb-jar>

我需要做什么才能使用上面的 ConnectionFactory?我从一开始就完全错了吗?

友好的问候/马格努斯

4

0 回答 0