星期六加了一天班,为ipass加上了前台客户端监控后台任务的功能。好在一次通过,没有连累到我的星期天。
ipass的的服务端接到客户端发来的请求后,生成的所有关于EMS的任务都要放到一个任务池中,有5个线程依次取出任务,完成任务,再到任务池中取任务。这样的好处是客户端发完命令后可以很快返回,继续作接下来的操作。如此设计的初衷是采用异步处理提高对用户的响应。任务在开始和结束都会给客户端返回信息,在大规模测试后发现,有的任务一直没有返回结束信息,用户不知道这个任务做到了什么程度,是不是做完了。
在如此情况下,开发监控后台进程执行任务的功能势在必行。首先在系统中保留5个执行线程的引用,通过这些引用,就可以取到正在执行的任务的信息,任务池中的任务全部是还没有作的任务,这样就可以取到未执行的任务,但是取的时候必须要加同步锁。任务的类中加入了控制执行进度的机制,可以按执行的程度计算出百分比。
前台是新加了一个View,用来显示后台任务的信息。本来的想法是直接利用eclipse的Progress View,而且它就在workbench这个plugin里面,ipass做成的rcp也带了这个plugin。但研究源码发现Progress View是显示Job Manager里面的Job信息,这就需要生成Job对象,但我的需求十分简单,并不需要这么复杂的类。想仿照eclipse的NewProgressViewer制作自己的Viewer,主要是想拥有进度条的功能,后来处于实际考虑,还是放弃,因为这么多的进度条显示势必会占用ipass本来就很紧张的内存。最后的实现就是用了一个TableViewer,分三列,图标,任务的名字,执行进度(用百分比表示)。在plugin.xml中添加这个View的extension,就是copy了eclipse ide ui那个plugin的Progress View的那一段,只是把它的class名字换成了我的Background Task。没有想到程序运行的时候,用鼠标双击程序任务栏的最右边,就会打开Background Task。在eclipse中这样的操作时打开Progress View。要有这个功能,还必须在构建rcp的WorkbenchWindowAdvisor时,设定configurer.setShowProgressIndicator(true)才可以。
关于任务信息的传递,一开始考虑的是拉模型,即客户端每隔1秒到服务器上取所有的任务信息。如果同时运行多个客户端,这样一来肯定会给服务器造成很大的负荷,而且到任务池中取信息时还要加同步锁。如果信息没有变化,这样的机制还会浪费很多的资源。对于推模型,即服务端任务每次有变化的时候,将变化的信息通知到各个客户端上,就会避免拉模型的这些问题,但是用户无法一开始获得全部的任务信息,因为只传递变化的信息。最后的实现为:用户打开Background Task 这个View时,客户端到服务器取所有的任务信息,而后不再主动取,服务端将变化的任务信息通知到各个客户端,每个任务都有唯一的hashcode,客户端再根据接收到的信息更新自己的Background Task View中的任务状态。
通过加入这一功能,可以很清楚地了解到任务执行慢的瓶颈在什么地方,这样程序的优化,改进就更有针对性,也有说服力。
分享到:
相关推荐
11. **扩展点(Extension Points)**:这是Eclipse RCP插件系统的关键特性,允许插件之间通过定义和使用扩展点来相互协作。 12. **案例研究和实践**:书中的配套代码(samples.zip)提供了实际的示例,帮助读者将...
Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...
2. **Eclipse使用经验**: 了解如何使用Eclipse进行基本的开发工作。 3. **SWT/JFace开发基础(可选)**: SWT和JFace是Eclipse用于构建用户界面的关键技术。 #### 五、Eclipse 组件详解 ##### 1. Menubar 菜单栏...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它提供了一整套工具和功能,使得开发者可以构建出具有丰富用户界面的应用。在开发完成后,我们需要将这些应用打包并发布,以便用户...
《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...
在本教程中,我们将详细介绍 Eclipse RCP 的开发过程、技术要点和注意事项,以帮助开发者快速掌握 Eclipse RCP 的开发技术。 一、Eclipse RCP 的技术要点 Eclipse RCP 的核心技术包括: 1. SWT(Standard Widget ...
使用Eclipse RCP,可以快速构建功能强大的客户端应用程序。然而,在实际开发中,我们经常需要使用第三方包来实现某些功能,这篇文章将介绍如何在Eclipse RCP中使用第三方包。 首先,我们需要新建一个Eclipse RCP...
Eclipse RCP,全称Eclipse Rich Client Platform,是基于Java平台的一种强大的应用程序框架,用于构建桌面应用程序。它源于Eclipse IDE,但其用途远远超出了集成开发环境(IDE)的范畴,允许开发者构建功能丰富的、...
Eclipse RCP(Rich Client Platform)是一个开源框架,用于构建功能丰富的桌面应用程序。...这个例子涵盖了插件开发、用户界面设计和事件处理等多个方面,对深入理解和使用Eclipse RCP技术非常有帮助。
在"**Eclipse RCP开发详解**"中,我们将深入探讨这个主题,帮助你快速掌握Eclipse RCP插件的开发。 首先,了解Eclipse RCP的基础架构是至关重要的。Eclipse RCP由多个组件构成,包括Workbench、Perspective、View、...
Eclipse 4 RCP的一大特点是使用MVC(Model-View-Controller)设计模式。在E4中,控制器(Controllers)通过监听模型(Models)的变化来更新视图(Views),确保数据的一致性。同时,E4支持依赖注入(Dependency ...
2. **Eclipse 使用基础**:由于 RCP 是基于 Eclipse 构建的,因此了解 Eclipse 的基本操作和功能对于掌握 RCP 至关重要。 3. **SWT/JFace 开发基础**:虽然不是必需的,但了解 SWT 和 JFace 可以帮助开发者更深入地...
eclipse使用内部浏览器加载echarts,过程中可能存在鼠标移动事件不响应,这个是eclipse浏览器中与echarts.js内兼容问题,该问题可通过修改echarts.js解决,如果找不到可以私信我
在“Eclipse RCP 例子程序”中,我们可能找到一系列的示例代码和项目,这些示例展示了如何利用Eclipse RCP的各种组件和机制来构建实际的应用。以下是一些关键的知识点: 1. **插件系统**:Eclipse RCP的核心是其...
6. **打包与部署**:使用Eclipse的导出功能将所有插件打包成可执行的RCP应用程序。 四、Eclipse RCP优势 1. **可扩展性**:插件系统使得添加新功能变得简单,只需编写新的插件即可。 2. **跨平台**:基于Java,...
Eclipse Rich Client Platform(RCP)是Eclipse框架下的一个核心组成部分,用于构建桌面应用程序。这个"Eclipse RCP培训.zip"文件很可能包含了关于如何开发基于Eclipse RCP的应用程序的各种教程、示例代码和讲解材料...
2. **创建RCP工程**:在Eclipse中,选择"File" > "New" > "Project",然后在"Plug-in Development"类别下选择"Eclipse RCP Application",按照向导完成新工程的创建。 3. **创建视图(View)**:RCP应用中的显示...
创建完成后,开发者可以在 Eclipse 内部或者独立运行 RCP 应用,通过运行配置中的 "Launch an Eclipse application" 来启动程序,从而测试应用的基本功能。 2.3. 应用程序 VS 产品 应用程序(Application)是开发...
Eclipse 4 RCP The Complete guide to eclipse application development (vogella) AZW3格式
【标题】"eclipse RCP mp3工程"指的是一个基于Eclipse Rich Client Platform(RCP)构建的专门处理MP3音频文件的应用程序。Eclipse RCP是一个强大的开发框架,允许开发者创建桌面应用,它提供了丰富的用户界面组件和...