【问题标题】:Get Primefaces EventBus from another servlet从另一个 servlet 获取 Primefaces EventBus
【发布时间】:2015-11-07 12:17:34
【问题描述】:

我正在使用 Primefaces Websocket 功能;它是使用 Atmosphere 框架实现的。

我的 webapp 中定义了两个 servlet:第一个用于前端(我使用 Primefaces 和 websocket 功能),第二个用于 API 功能(我使用 Jersey 和 JAXRS 功能) .

我需要做的是:当一个请求发布到一个资源(使用 API servlet)时,我需要使用 websockets 向所有连接的客户端发送一条消息。

在第二个 servlet 中,在拦截 post 请求的方法中,我尝试了以下解决方案:

EventBus eventBus = EventBusFactory.getDefault().eventBus();
    eventBus.publish("subscriber/*", "This message is for all connected clients, through websockets");

它不起作用,似乎EventBusFactory 的EventBus 实例提供程序与连接所有用户的实例提供程序不同。消息未广播。

这怎么可能?

如果我尝试从第一个 servlet 广播消息,与客户端使用 websockets 的情况相同,一切正常。

【问题讨论】:

    标签: java jsf servlets jsf-2 primefaces


    【解决方案1】:

    我已经解决了这个问题。 只需使用

    EventBus eventBus = EventBusFactory.getDefault().eventBus();
        eventBus.publish("subscriber/*", "This message is for all connected clients, through websockets");
    

    在第二个 servlet 上,EventBus 将被解析。 我犯了一个语法错误,所以第二个 servlet 没有正确解析 EventBus。

    因此,请注意编写正确的订阅者主题,在我的情况下为 "subscriber/*",以便拦截在第三方 servlet 中创建的所有端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多