我第一次尝试 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?我从一开始就完全错了吗?
友好的问候/马格努斯