Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个servlet获取Primefaces事件总线_Java_Jsf_Servlets_Jsf 2_Primefaces - Fatal编程技术网

Java 从另一个servlet获取Primefaces事件总线

Java 从另一个servlet获取Primefaces事件总线,java,jsf,servlets,jsf-2,primefaces,Java,Jsf,Servlets,Jsf 2,Primefaces,我正在使用Primefaces Websocket功能;它是使用大气框架实现的 我在我的webapp中定义了两个servlet:第一个用于前端(在那里我使用Primefaces和websocket功能),第二个用于API功能(在那里我使用Jersey和JAXRS功能) 我需要做的是:当一个请求被发布到一个资源(使用API servlet)时,我需要使用WebSocket向所有连接的客户端发送一条消息 在第二个servlet中,在拦截post请求的方法中,我尝试了以下解决方案: EventBus

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

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

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

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

EventBus eventBus = EventBusFactory.getDefault().eventBus();
    eventBus.publish("subscriber/*", "This message is for all connected clients, through websockets");
它不起作用,似乎是由
EventBusFactory
提供的
EventBus
实例提供程序与连接所有用户的实例提供程序不同。消息没有广播

怎么可能呢

如果我尝试广播来自第一个servlet的消息,与客户端使用WebSocket的位置相同,所有这些都正常工作。

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

EventBus eventBus = EventBusFactory.getDefault().eventBus();
    eventBus.publish("subscriber/*", "This message is for all connected clients, through websockets");
在第二个servlet上,将解析
EventBus
。 我犯了一个语法错误,因此第二个servlet没有正确解析
EventBus

因此,在编写正确的订户主题时要小心,在我的例子中是“订户/*”,以便拦截在第三方servlet中创建的所有端点