2

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

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

那么,有没有办法在我的 OX 应用程序中使用 JMS 侦听器类来实现这一点?

提前致谢,

4

1 回答 1

1

一个选项可以是使用 JavaScript 定期调用以了解是否在表中添加了新记录或其他内容,以及是否刷新大小写。

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

像这样的东西:

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

我没有测试这段代码,所以它肯定不能按原样工作。把它当作一个想法。

真的,这是一个肮脏的把戏。理想的情况是 OpenXava 将直接支持 Comet,您只需调用服务器中的方法即可完成此操作。你认为为 OX 添加彗星支持值得吗?

于 2012-12-21T13:00:50.800 回答