java - 从另一个 servlet 获取 Primefaces EventBus

标签 java jsf servlets jsf-2 primefaces

我正在使用 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 的情况下,一切正常。

最佳答案

我已经解决了这个问题。 简单地使用

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

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

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

关于java - 从另一个 servlet 获取 Primefaces EventBus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006715/

相关文章:

java - 包 org.hibernate 可以从多个模块访问 : hibernate. commons.annotations, hibernate.core

java - 可运行的 JAR 文件导出

java - 如何获取过滤器中的当前 Servlet 对象?

java - 从 JSP Scriptlet 迁移到 Servlet

java - 无法随机生成两个数字之间的数字

java - 检查 JLabel 的 Icon 是否为特定 Icon

html - 滚动 JSF 页面时如何始终显示 div

java - 如何在调用 Java 代码后使 XPage 处于 Activity 状态

java - 不评估 EL 表达式

java - AngularJS Formdata文件数组上传