2013-04-09 61 views
0

當java程序接收到異步消息時,有沒有辦法通知jsf/spring bean?而且,Java程序是Java BayeuxClient(Cometd)作爲pojo。該程序成功接收元信道和訂閱頻道上的消息,如下所示。向JSF Bean通知java事件

@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的不是這些方法中可用,甚至豆都被註解(@Component @Scope(「會議」)對JSF/Spring集成,豆類不能注入作爲FacesContext中是不可用的。我們怎樣才能注入JSF豆或從上述方法通知春天豆?

回答

0

看一看在CometD-Spring integration

您可以在Spring配置文件中與通常的定義你的cometd服務(或註釋它們),併線的依賴彈簧機構。

我不建議直接訪問FacesContext,因爲這會將您綁定到HTTP傳輸,並且您將無法使用WebSocket傳輸,從而提高性能。

我建議你重構你的消息的邏輯成是不可知的運輸是POJO的,不依賴於類,如HttpServletRequestHttpSessionFacesContext

+0

感謝。我必須在網頁上推送兩個變量(網絡狀態和同步狀態)。我能夠使用面向上下文的ICEfaces Ajax Push來推送。我可以根據以上metaConnect方法收到的消息來確定網絡狀態。網絡狀態設置爲true將在與遠程服務器重新連接後自動啓動同步過程。本地服務器將充當Java Bayeux客戶端。問題是將網絡狀態和同步過程的結果推向網頁。我使用Annotated Client-Side Service作爲Spring Bean並能夠接收訂閱的消息。 – user2263197 2013-04-10 15:55:47