我能够集成ActiveMQ并在OpenXava应用程序中创建JMS使用者。现在,我需要使用消息中接收到的数据更新某些临时视图,例如,它有几个问题需要考虑…如何从JMS侦听器Java类转到将更改推送到当前视图?…并且假设特定视图是当前视图!!,但是当前视图可以是整个应用程序中几种可能的视图中的任何一个!…是吗?是吗?…然后我确实认为,我会将JMS消息持久保存到某个实体中(作为DB中的临时存储),即使这样会导致性能降低,但是之后……我将如何推动最近的更改如果某些用户正在查看过渡视图。
我曾经使用启用了Ajax的JSF实现来构建Webapp,然后可以在JMS侦听器中接收消息,然后获取jsf托管Bean参考,并使用Ajax push刷新可能由一个或多个打开的所有会话。有几个用户正在查看该应用程序,因此这总是产生一种实时应用程序,该应用程序会更新任何打开的视图(如果该视图是用户正在观看的视图)。
因此,有没有一种方法可以在我的OX应用程序中使用JMS侦听器类来实现?
提前致谢,
一个选项可以使用JavaScript定期调用,以了解是否在表中添加了新记录,或者是否刷新了新记录。
如果您是liferay,可以使用JavaScript代码在该页面中创建portlet。该代码可以使用DWR进行调用,并且如果有新数据,则可以直接调用“ CRUD.refresh”操作。
像这样:
refreshData = function() { openxava.executeAction('YourApplication', 'YourModule', '', false, 'CRUD.refresh') setTimeout('refreshData()', 5000); } setTimeout('refreshData()', 5000);
我没有测试此代码,因此肯定无法按原样工作。把它当作一个想法。
真的,这是一个肮脏的把戏。理想的情况是OpenXava将直接支持彗星,您只需调用服务器中的方法就可以完成。您是否认为增加对OX的彗星支持价值?