0

当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 或通知 spring bean以上方法?

4

1 回答 1

0

看看CometD-Spring 集成

您可以在 Spring 配置文件中定义 CometD 服务(或对其进行注释),并将依赖项与通常的 Spring 机制联系起来。

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

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

于 2013-04-10T09:32:26.137 回答