将java事件通知给JSF Bean



当java程序接收到异步消息时,是否有办法通知jsf/spring bean ?此外,java程序是一个java BayeuxClient (Cometd)作为pojo。程序成功接收到元通道和订阅通道上的消息,如下所示。

@Listener(Channel.META_CONNECT)
    public void metaConnect(Message message) {
    boolean connected = message.isSuccessful();
            ...
    }
@Subscription("/notification")
    public void subscribeUpdates(Message message) {
    String updates=message.getDataAsMap().toString()    
        .....   
    }

FacesContext在这些方法中是不可用的,即使bean被注释为(@Component @Scope("session")用于jsf/spring集成。由于facesContext不可用,bean不能被注入。如何通过上述方法注入jsf bean或通知spring bean ?

看看CometD-Spring集成。

你可以在Spring配置文件中定义CometD服务(或对它们进行注释),并将依赖关系与通常的Spring机制连接起来。

我不建议直接访问FacesContext,因为这会将您绑定到HTTP传输,并且您将无法使用WebSocket传输,这将给您带来性能提升。

我建议您将消息传递逻辑重构为与传输无关的pojo,即不依赖于HttpServletRequest, HttpSession, FacesContext等类

相关内容

  • 没有找到相关文章

最新更新