繁体   English   中英

Eclipse RAP / RWT独立应用程序-最佳设计?

[英]Eclipse RAP / RWT Standalone applications - Best design?

我正在用RAP / RWT设计Tomcat下的RAP / RWT。 我现在正在学习RAP,我想到了几个问题。

我的应用程序具有一个可以连续从某些来源收集数据的后端。 另一方面,我想创建作为Web应用程序运行的前端(RWT独立应用程序,或具有工作台功能的RAP,尚未确定)。

  • 第一个问题:我应该将后端作为一个单独的进程保留,并让前端RAP应用程序以某种方式与其通信吗? 还是可以将所有内容集成到RAP应用程序中? 将所有内容集成在一起会导致第二个问题。

  • 第二个问题:什么时候关闭了保存我的应用程序的浏览器窗口/选项卡,我如何才能从RAP应用程序中检测到? 当用户关闭图形界面(即关闭浏览器)时,我想进行一些资源清理。 我在RWT独立应用程序中找不到与ApplicationWorkbenchWindowAdvisor#preWindowShellClose等效的任何内容。 与启动应用程序时预期的相同。 通常,在RWT独立应用程序中是否存在遵循webapp生命周期的回调?

非常感谢你的帮助!

关于第一点:使用EJB时​​,请注意,您只能从请求线程直接访问Java EE上下文。 当您在JEE_COMPATIBILITY模式下运行时,这不是问题,但是在SWT_COMPATIBILITY模式下,您可能需要通过RWT.requestThreadExec( Runnable );访问EJB RWT.requestThreadExec( Runnable );

关于第二个问题,RAP服务器当前未在浏览器关闭时通知。 错误284273-浏览器关闭时的会话终止机制中讨论了此问题。 它尚未实现,因为IIRC我们找不到可靠的方法来在所有浏览器中都可以使用。

您可以使用以下方法来实现自己的解决方案:a)JSExecutor在客户端上放置一些JavaScript,以在浏览器关闭时发送请求,以及b)PhaseListener侦听这些请求并终止会话。

(*)首先:去耦始终是最佳实践。 我使用RMI存根从后端应用程序(另一个RMI对象或EJB Bean)接收通知。

 MyEJBListener stub = UnicastRemoteObject.exportObject(new MyEJBListener(display, page,
                                    manager, handlermanager), 0)
 MyEJBClient client1 = MyEJBLocator.findEJBClient("abc");
 client1.addListener(stub);

在存根中使用类似

public void notify(Event event){

  UICallBack.activate("stubthread");
  Display..asyncExec(new Runnable() {
   // update event info
  });
}

(*)第二: WorkbenchWindowAdvisor#postWindowClose方法可以帮助您吗?并从后端应用程序调用somethig方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM