ActiveMQ messagedriven bean到JSF

时间:2010-07-23 10:15:44

标签: java jsf primefaces activemq message-driven-bean

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

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

THX

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

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

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

你可以做的是使用像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