将java事件通知给JSF Bean

时间:2013-04-09 19:37:40

标签: java spring jsf cometd bayeux

有没有办法在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集成。不能将bean注入facesContext不可用。我们如何注入jsf bean或notify春豆来自上述方法吗?

1 个答案:

答案 0 :(得分:0)

查看CometD-Spring integration

您可以在Spring配置文件中定义CometD服务(或注释它们),并使用通常的Spring机制连接依赖项。

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

我建议您将消息传递逻辑重构为与传输无关的POJO,即不依赖于HttpServletRequestHttpSessionFacesContext等类。