【问题标题】:Richfaces 4.1 push without JMS?没有 JMS 的 Richfaces 4.1 推送?
【发布时间】:2012-01-12 14:09:13
【问题描述】:

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

没有 JMS 似乎要简单得多:)

有什么建议吗?

谢谢, 米洛·范德泽

【问题讨论】:

    标签: richfaces


    【解决方案1】:

    来自 Richfaces 4.1 Component Reference

    3.8.6。在没有 JMS 的情况下使用 Push

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

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

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

    【讨论】:

    • 是的,我知道而且我已经有了那个设置,但是接下来呢?我不知道如何产生事件。某种示例会非常好,或者我可以使用 IRC 演示并删除气氛库吗?
    【解决方案2】:

    【讨论】:

    • 非常感谢。我想我现在有正确的代码,但它仍然不起作用。见我的另一个question
    【解决方案3】:

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

    如果您使用的是 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,这样订阅该主题的页面就会自动收到通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2015-01-10
      • 2016-06-11
      相关资源
      最近更新 更多