以编程方式从JMS侦听器类更新某些视图

时间:2012-12-18 19:44:44

标签: ajax jms push listener openxava

我能够集成ActiveMQ并在我的OpenXava应用程序中创建一个JMS使用者。现在,我需要使用收到的数据更新某些瞬态视图 消息,它有几个需要考虑的问题,例如...如何从JMS监听器java类转到并将更改推送到当前视图? ......和 假设特定视图是当前的!!!,但是当前视图可以是整个应用程序中的几个可能视图中的任何一个! ......好吗?所以?... 然后我确实认为,我会将JMS消息保存到某个实体(作为DB中的临时存储),即使这会导致性能低下,但之后 那...如果某个用户正在查看瞬态视图,我将如何推动最近的更改。

我习惯使用一些启用了ajax的JSF实现来构建我的webapps,然后我可以在JMS监听器中接收消息然后获取一个jsf 托管bean引用并使用Ajax push来刷新可能由一个或多个用户查看应用程序打开的所有会话,因此这总是产生一个 一种实时应用程序,它可以更新任何打开的视图(如果视图是用户正在观看的视图)。

那么,有没有办法通过JMS监听器类进入我的OX应用程序?

提前致谢,

1 个答案:

答案 0 :(得分:1)

一个选项可以使用JavaScript来定期调用,以了解是否在表中添加了新记录或其他任何内容,以及是否更新了案例。

如果你是liferay,你可以使用JavaScript代码在该页面中创建一个portlet。此代码可以使用DWR进行调用,如果有新数据,则可以直接调用“CRUD.refresh”操作。

这样的事情:

refreshData = function() {
   openxava.executeAction('YourApplication', 'YourModule', '', false, 'CRUD.refresh')
   setTimeout('refreshData()', 5000);
}
setTimeout('refreshData()', 5000);

我没有测试这段代码,所以肯定它不能正常工作。把它作为一个想法。

真的,这是一个肮脏的把戏。理想的情况是OpenXava会直接支持彗星,你可以通过调用服务器中的方法来实现这一点。你认为为OX增加彗星支持价值吗?