一尘不染

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

ajax

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

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

因此,有没有一种方法可以在我的OX应用程序中使用JMS侦听器类来实现?

提前致谢,


阅读 195

收藏
2020-07-26

共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的彗星支持价值?

2020-07-26