有没有办法在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春豆来自上述方法吗?
答案 0 :(得分:0)
您可以在Spring配置文件中定义CometD服务(或注释它们),并使用通常的Spring机制连接依赖项。
我不建议直接访问FacesContext
,因为这会将您绑定到HTTP传输,并且您将无法使用WebSocket传输,这将为您带来性能提升。
我建议您将消息传递逻辑重构为与传输无关的POJO,即不依赖于HttpServletRequest
,HttpSession
,FacesContext
等类。