Richfaces 4.1推送没有JMS?

时间:2012-01-12 14:09:13

标签: richfaces

我使用a4j:推入RF3.2分支但是使用RF4.1似乎有点复杂。特别是对JMS系统的需求需要一些研究。在学习的过程中,我读到不再需要JMS,但我找不到任何演示版。我在夜间构建中找到了操作方法和演示代码,但它们似乎都使用了JMS。

没有JMS似乎更简单:)

有什么建议吗?

谢谢, Milo van der Zee

3 个答案:

答案 0 :(得分:0)

来自Richfaces 4.1 Component Reference

  

3.8.6。使用Push without JMS

     

由于在某些情况下JMS耦合可能是不需要的,因此RichFaces   提供了一个关闭JMS集成的开关:

<context-param>
    <param-name>org.richfaces.push.jms.disable</param-name>
    <param-value>true</param-value>
</context-param>

只需将上述上下文参数添加到您的web.xml,使用不带JMS的推送组件。

答案 1 :(得分:0)

答案 2 :(得分:0)

我知道这篇文章是一篇旧文章,但我可以看到这个主题是该主题的最佳搜索之一。

如果您使用的是Servlet 3.0,则无需更改web.xml

首先,您需要安装正确版本的氛围。我参与过的项目是使用Richfaces 4.3.6.Final。它兼容的大气版本是1.0.17

<dependency>
    <groupId>org.atmosphere</groupId>
    <artifactId>atmosphere-runtime</artifactId>
    <version>1.0.17</version>
</dependency>

然后,您可以开始使用TopicContext从托管bean向订阅者发送通知。以下是我将数据发布到TopicContext

的方法
TopicKey topicKey = new TopicKey("sometopic");
TopicsContext topicsContext = TopicsContext.lookup();

try {
    topicsContext.publish(topicKey, "somenewdata");
} catch (MessageException e) {
    e.printStackTrace();
}

然后您只需要在订阅页面中包含推送组件。

<a4j:push address="sometopic">
    <a4j:ajax event="dataavailable" oncomplete="someJsMethodToExecuteAfterGettingNotified();"/>
</a4j:push>

一旦设置成功,您只需在托管bean中的任何位置调用TopicContext#publish,以便自动通知订阅该主题的页面。