我使用a4j:推入RF3.2分支但是使用RF4.1似乎有点复杂。特别是对JMS系统的需求需要一些研究。在学习的过程中,我读到不再需要JMS,但我找不到任何演示版。我在夜间构建中找到了操作方法和演示代码,但它们似乎都使用了JMS。
没有JMS似乎更简单:)
有什么建议吗?
谢谢, Milo van der Zee
答案 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)
再次尝试RichFaces 4.1组件参考, 有两个使用样本(TopicsContext和CDI):
答案 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
,以便自动通知订阅该主题的页面。