前段时间,我使用 JMS 侦听器(用于接收消息)到标准 web 应用程序中,通常使用 JSF (ICEfaces) 用于 web 应用程序和 spring、activemq 等,用于 JMS 集成。
现在,我正在尝试在 OpenXava 应用程序中做同样的事情。所以,这就是我目前所做的:
- 我已将 listeners.xml 创建到 WEB-INF(与 web.xml 相同的位置,因为 OpenXava 我无法修改),其中包含以下内容(内容将由 OpenXava 自动添加到 web.xml):
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
我已经创建了 applicationContext.xml(我已经测试过将它放置在 OpenXava 应用程序 src 文件夹以及 WEB-INF 中),其内容如下:
<!-- Create the topic to connect to --> <bean id="TTCTopic" class="org.apache.activemq.command.ActiveMQTopic"> <property name="physicalName" value="com.comp.app.message.tags"/> </bean> <!-- JMS Connection Factory --> <bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://127.0.0.1:1100"/> </bean> <!-- Spring Helper to listen to a JMS Destination --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="TTCTopic" /> <property name="messageListener" ref="messageReceiver" /> </bean>
然后,我创建了我的侦听器类 (com.comp.app.listeners.MessageReceiver),它实现了 JMS MessageListener 接口,并具有处理接收到的消息的代码。
此外,我确实将 spring 和 activemq jar 放入我的 OpenXava 应用程序的 WEB-INF/Lib 中,并且我在项目的类路径中为每个 jar 添加了引用。
最后,我没有收到任何错误。
所以,毕竟问题是:弹簧上下文没有像应该做的那样被添加到 OpenXava web.xml 中......因为没有创建弹簧上下文,因此永远不会创建 JMS 侦听器。
那么,我在这里缺少什么?... 有一个更好的方法吗?
提前致谢,