从另一个servlet

时间:2015-08-14 09:26:37

标签: java jsf servlets jsf-2 primefaces

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

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

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

在第二个servlet上,在拦截发布请求的方法内部,我尝试了这个解决方案:

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

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

怎么可能?

如果我尝试从第一个servlet广播消息,客户端使用websockets的消息也一样,都可以正常工作。

1 个答案:

答案 0 :(得分:1)

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

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

EventBus将被解析。 我提交了语法错误,因此第二个servlet没有正确解析EventBus

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