java – ActiveMQ messagedriven bean到JSF

我目前正在ActiveMQ中读取后端的消息驱动bean(EJB3).我面临的问题是,当我从消息驱动bean中的ActiveMQ收到消息时,我必须更新JSF页面中的表.

我可以尝试的任何技术建议都会很棒.我目前正在使用primefaces和glassfish.

谢谢

最佳答案 您不能直接从消息驱动的bean中调用(JSF)托管bean方法,因为它们处于活动状态的范围和时间是完全不同的.

托管bean在HTTP请求期间基本上处于活动状态.之后,它的状态可能仍然存储在某个地方(即,如果使用应用程序,会话或会话范围),但它没有主动执行任何操作.

你可以做的是使用像Comet这样的技术,你基本上可以暂停来自支持bean的请求.然后,您可以让backing bean等待,然后再次恢复请求.您可以让托管bean侦听消息驱动Bean正在侦听的相同JMS队列(假设使用了JMS),或者您可以让托管bean侦听CDI事件总线.一旦MDB从ActiveMQ接收到某些内容,MDB就可以将其放在CDI事件总线上,并且辅助bean将接收它.

实际上,MDB然后用作桥接组件.

有关Devoxx ’10的一些演示文稿展示了与您所要求的相似的内容.

我认为其中包括这些内容:http://www.adam-bien.com/roller/abien/entry/pets_and_aliens_running_on

点赞