将 Eclipse RCP 应用程序迁移到 IBM Lotus Expeditor

Eclipse Rich Client Platform 和 IBM Lotus Expeditor V6.1 是用于构建客户端应用程序的平台。本文中,我们将探究 Eclipse RCP 和 Lotus Expeditor,讨论为何以及何时需要为 Lotus Expeditor 和 RCP 开发应用程序,并演示如何将已有的 RCP 应用程序迁移到 Lotus Expeditor。

Peter Xu, 高级管理顾问, EMC

Peter Xu 是 IBM Software Services for WebSphere 小组的一名高级咨询师。WebSphere 软件服务部的咨询师帮助客户将 IBM 产品部署到其组织中。Peter 为“财富 500 强”客户提供有关 J2EE 技术(尤其是 WebSphere 和 WebSphere Studio 产品)方面的咨询服务、培训和指导。



2009 年 8 月 20 日

Eclipse 富客户端平台(Rich Client Platform,RCP)应用程序的普及性正在与日俱增,它们用于构建和部署真实的企业应用程序。IBM Lotus Expeditor 是 IBM 的一款新产品,旨在帮助构建复合客户端应用程序,其中包括 Eclipse RCP 应用程序。在本文中,我们将比较这两种平台。

IBM Lotus Expeditor

IBM Lotus Expeditor 构建在 Eclipse RCP 之上,并且是 IBM 面向通用托管客户端中间件的战略平台。它支持各种不同的操作系统,例如 Microsoft Windows 2000、Microsoft Windows XP 和 Linux。它不仅仅针对台式机和笔记本,还适用于移动设备和 kiosk。这是通过 Managed Client Services 实现的,该服务包括一种可选的运行时环境、一个稳定的 OSGI 组件框架和其他一些组件服务。

Lotus Expeditor 的另一个重要特性就是支持动态配置客户端以及根据需要提供后续更新。服务器托管的客户端将减少部署和维护软件的管理成本。Lotus Expeditor 中的这种功能通常指的是 Platform Management Services,它包括 Eclipse Update Manager 和企业管理代理,用于在客户端平台上安装和更新应用程序及服务。

Lotus Expeditor 也提供了一系列访问服务。这些服务是用于客户端和服务器组件集成的中间件。Lotus Expeditor 可以充当 Web 服务的提供者和使用者,并且可以与任何支持 Web 服务的应用程序集成。它拥有一个本地消息传递提供者,可以支持异步编程模式。Lotus Expeditor 还提供了用于数据和同步服务的本地数据库。这些特性允许应用程序采用非连接模式。通过与服务端组件相结合,当网络和目标方可用时可以实现事务同步。

最后,Lotus Expeditor 还是针对复合应用程序的客户端集成平台。从用户界面的角度来看,它在单一客户端视图中聚合了各种应用程序类型,包括 SWT 应用程序、Web 和 portlet 应用程序、ActiveX 和本地 Windows 应用程序、Swing 等。它还提供了一个 J2EE Web 和 portlet 容器,可以支持在本地运行这些传统的基于服务器的界面。此特性被称作交互服务。

图 1 简要展示了 Lotus Expeditor 的组成。

图 1. IBM Lotus Expeditor 栈
IBM Lotus Expeditor 栈

我们已经说过,Lotus Expeditor 是 IBM 的战略客户端平台,它提供了一个通用用户体验底层编程模型,适用于各种 Lotus 产品,包括 IBM Lotus Sametime V7.5、IBM WebSphere Portal V6.0 和即将发行的 IBM Lotus Notes V8 发行版。


比较 IBM Lotus Expeditor 和 Eclipse Rich Client Platform

IBM Lotus Expeditor 构建在 Eclipse RCP 之上,因此它提供了完整的 Eclipse RCP 兼容性。

首先,Lotus Expeditor 支持开发和部署一组广泛的应用程序:

  • Eclipse Rich Client Platform 应用程序(仅桌面客户端)
  • 嵌入 Eclipse 的 Rich Client Platform 应用程序
  • Web 应用程序
  • 嵌入式事务应用程序
  • Portlet 应用程序(仅桌面客户端)
  • 数据库应用程序
  • 消息传递应用程序
  • Web 服务应用程序

从此列表中可以看出,Lotus Expeditor 不仅支持客户端 Eclipse RCP 应用程序,还支持在客户端上运行传统的 J2EE 服务端应用程序。所有这些强大的功能源于它所包含的中间件组件,比如 Web 容器、portlet 容器和事务容器。

其次,Lotus Expeditor 是一个面向复合应用程序的平台。它将独立应用程序(ActiveX、Swing、Eclipse SWT、主机访问和基于浏览器的应用程序)集成到单一复合视图中。复合应用程序支持集成来自多个应用程序的信息,根据用户的角色和任务为他们提供内容。Lotus Expeditor 支持您通过使用 Property Broker 来集成 portlets 和 Eclipse 应用程序。

在本文中,我们主要讨论在 Lotus Expeditor 中开发和部署 Eclipse RCP 应用程序。您在开发 Eclipse RCP 应用程序时,Expeditor 平台的吸引力究竟在哪里?答案非常简单:Lotus Expeditor 不仅支持 Eclipse RCP 平台需要提供的所有基本功能,还从诸多方面扩展了 Eclipse RCP,您不需要自己从头开始实现这些功能。

企业安全性

Eclipse 缺少开箱即用的安全性。如果您希望为 Eclipse RCP 应用程序提供安全性,则需要自己实现。另一方面,Lotus Expeditor 平台在保护应用程序数据方面是一个安全的平台。操作系统的单点登录功能默认内置在该平台中。

Lotus Expeditor 为运行于客户端上的应用程序和应用程序数据提供保护,方式如下:

  • 您可以使用 Accounts API 来实现身份验证机制,这个 AIP 允许您存储、访问和使用连接到(或与之通信)本地或远程服务所需属性。Accounts API 可用于获取、添加、更新、删除和监听对帐户的更改。Accounts 组件还提供了一个公共用户界面,用户可以在该界面中查看和更改所有服务的帐户信息和密码。
  • Lotus Expeditor 客户端还使用 Java Authentication 和 Authorization Service (JAAS) 提供了一种可配置的、灵活的平台登录/身份验证体验。Lotus Expeditor 客户端提供了一些公开的登录模块,您可以扩展它们,在应用程序中实现对远程服务器的身份验证。
  • 从授权的角度来说,Lotus Expeditor 为运行于客户端之上的应用程序和应用程序数据提供保护,其方法是仅限具备有效身份凭证的用户访问目标特性。
  • Lotus Expeditor 还通信将身份验证信息,如用户名和密码,保存在加密密钥库来保护用户凭证。

离线功能

IBM Lotus Expeditor 通过网络层为应用程序和平台组件提供了一个框架,用于网络调用和网络错误处理。它使用户能够确定客户端平台以及远程服务器和 HTTP 资源(包括 Web 服务)连接性的当前状态。应用程序可以选择接收客户端状态更改通知,或使用公共 API 检测客户端平台状态(供离线管理人员使用)。此功能还可以与 Synchronization Manager 结合使用,这样,用户和应用程序便可以使用一个或多个同步服务发起、控制和监控本数据的同步。毫无疑问,您的 RCP 应用程序可以利用这些功能。

部署和更新管理

Lotus Expeditor 提供了以下两种托管客户端。

  • Device Manager 托管的客户端。Device Manager 服务器提供了各种用于管理服务的功能,包括查询和更新功能。作为客户端平台的一部分,Enterprise Management Agent 被认为是 Device Manager 服务器的设备。代理将定期轮询 Device Manager 服务器,接收任何需要处理的作业。在服务器端,您需要向 Device Manager 服务器注册 Eclipse 特性,并创建作业将特性分发给客户端。Device Manager 服务器将处理软件分发、目录管理和托管设置。管理将按设备进行。
  • Portal 管理的客户端。Lotus Expeditor 客户端工作站还可以配置为从 WebSphere Portal 接收配置信息。集中管理的基于角色的访问控制是所有大型企业的关键需求。

WebSphere Portal 管理员可以使用相同的 Portal 页面和位置管理、用户管理和访问控制来集成、管理和重用各种类型的设备,比如手机、PDA 和基于浏览器的桌面系统。Portal 管理的客户端进一步扩展了此范围,它支持基于 Expeditor 客户端的富客户端桌面应用程序。此管理将按用户进行。

Lotus Expeditor 按用户或设备集成控制软件的管理和配置。此功能极大减少了部署和维护软件的成本。

IBM 提供的支持

您希望将下一个 Eclipse RCP 应用程序部署到 Lotus Expeditor 的另一个重要原因是 IBM 支持。使用 Lotus Expeditor,您将获取一个正式支持的 RCP 栈和一个客户端服务中间件栈,您可以在此基础上构建自己的解决方案。这将帮助您避免产品应用程序的调试和故障排除。


Lotus Expeditor 工具包

Lotus Expeditor 工具包构建于 Eclipse 3.2.1 之上,它为您提供了一组完整、集成的工具,用于开发、调试、测试、封装和部署使用客户端服务的客户端应用程序。Lotus Expeditor 工具包可以通过 Passport Advantage 计划 获取。

工具包提供了一些向导,您可以用于创建 Client Services 项目来开发客户端应用程序。工具包使用目标定义提供了一个快捷的方法,可帮助您指定运行时环境、编译时环境以及可以在平台上运行的组件集。举例来说,在创建 Client Services 项目时,您可以从可用目标列表中选择一个目标定义和一组特性,并且工具包将自动为您的项目设置 Java Build Path 和运行时。然后,您可以编辑、编译和调试您的项目。工具包提供了一组默认的目标定义;但是,您可以创建您自己的定义。

在继续阅读本文之前,确保您已经安装了此工具包。我们将使用它进行富客户端应用程序开发。


迁移示例 RCP 应用程序

此处给出了将已有 RCP 应用程序迁移到 IBM Lotus Expeditor 的步骤。

导入示例 RCP 应用程序

本文的主题并不是如何开发 RCP 应用程序,因此我们没有给出详细的开发步骤。我们将导入一个已有的 Eclipse RCP 应用程序,稍后将对它进行迁移。开始之前,确保已经下载了本文 下载 小节中提供的示例代码。

  1. 使用一个新的工作空间启动 Eclipse,选择 Window - Open Perspective - Plug-in Development 切换到 Plug-in Development 透视图。
  2. 从 File 菜单中,选择 Import 向导。
  3. 在 Import 向导中,选择 “Existing Projects into Workspace”,然后单击 Next。
  4. 在图 2 显示的 Import 项目窗口中,选择 Select archive file 选项,浏览到您下载的 org.eclipse.rcp.mail.zip 压缩文件,然后单击 Finish。
图 2. 选择项目
选择项目
  1. 将 org.eclipse.rcp.mail 导入到工作空间后,展开它,选中 plugin.xml 并双击打开它。
  2. 选择 Overview 选项卡,如图 3 所示,然后单击右栏中 Testing 下方的 “Launch an Eclipse application” 链接。
图 3. 启动 RCP 应用程序
启动 RCP 应用程序
  1. 几秒钟后,您将看到打开 RCP Product 窗口,如图 4 所示。
图 4. Eclipse RCP 邮件
Eclipse RCP 邮件

这是通过 Eclipse 中的 RCP 邮件模板创建的 RCP 应用程序。此处并不详细讨论如何创建此应用程序。参见 参考资料 小节,获取 RCP 文档。

迁移应用程序

现在,您已经可以将此 RCP 邮件应用程序迁移到 Lotus Expeditor 中了。

  1. 从 Eclipse File 菜单中,选择 New - Project。
  2. 在向导对话框中,展开 Client Services 并选择 “Convert Project to Client Services Project”,如图 5 所示。

    注意:Lotus Expeditor 中的富客户端应用程序将通过 Client Services Project 来进行开发。
图 5. 转换项目
转换项目
  1. 选择刚才导入的富客户端插件项目 org.eclipse.rcp.mail,然后指定希望将它转换为另一个名称为 com.ibm.expeditor.mail 的 Client Services Project,如图 6 所示。
图 6. 转换 RCP 邮件
转换 RCP 邮件
  1. 接受 Target Definition 窗口中的 Default Target,然后单击 Finish。
  2. 现在,在图 7 所示的 Package Explorer 视图中,原始项目有了一个新图标,它标识此项目是一个 Client Service Project。

    在为 Lotus Expeditor 开发应用程序时,一切内容都组织在 Client Service Project 下面,后者具有一个 Eclipse Nature com.ibm.pvc.tools.bde.ExtensionServicesNature 和一组自己的构建器和启动器。
图 7. Project Nature
Project Nature
  1. 选择项目 com.ibm.expeditor.mail,展开它,选择 plugin.xml 并双击以打开它。
  2. 选择 plugin.xml 选项卡,然后将清单 1 所示的代码片段复制到顶部 <plugin> 标记的后面。

    注意:要被 Lotus Expeditor 运行时识别,Lotus Expeditor 应用程序必须注册和扩展 WctApplication 扩展点。但需要明确此 Lotus Expeditor 应用程序不能与您预期中的 RCP 应用程序直接匹配。实际上,Lotus Expeditor 应用程序与图 8 所示的 RCP 透视图极为相似。
清单 1. 定义 Lotus Expeditor 应用程序
<extension
         id="com.ibm.expeditor.mail"
         point="com.ibm.eswe.workbench.WctApplication">
      <Application
            DisplayName="Expeditor Mail"
            PerspectiveId="org.eclipse.rcp.mail.perspective">
      </Application>
   </extension>
图 8. 定义扩展
定义扩展
  1. 现在,切换到 Overview 选项卡并单击右栏 Testing 下方的 “Launch Client Services application” 链接。
  2. 几秒钟后,您将看到如图 9 所示的窗口,它会提示您输入密码。输入您在安装 Lotus Expeditor 桌面客户端时所选择的密码。
图 9. 登录到平台
登录到平台
  1. 登录平台并打开工作台后,单击 Open,此时会出现一个下拉菜单。选择要转换的应用程序 ExpeditorMail,如图 10 所示。
图 10. 选择应用程序
选择应用程序

最初的 RCP 邮件应用程序现在运行在 Lotus Expeditor 中,它使用 Lotus Expeditor 默认的个性配置,如图 11 所示。

图 11. IBM Lotus Expeditor 中的邮件应用程序
IBM Lotus Expeditor 中的邮件应用程序

结束语

您已经成功将 Eclipse RCP 应用程序迁移到了 IBM Lotus Expeditor 客户端。您已经看到,在 Lotus Expeditor 工具包的帮助下,迁移过程相当直观和简单。为了充分利用 Lotus Expeditor 平台,您可能希望能够增强已有应用程序,因此可以选择探索 Lotus Expeditor 特性(比如安全性),或者根据自己需求定制 Lotus Expeditor。Lotus Expeditor 提供了许可现成可用的特性和服务,帮助您加快 RCP 应用程序的开发。


致谢

作者衷心感谢 J. Christopher Hawley 和 James Robbins 审阅了本文!


下载

描述名字大小
org.eclipse.rcp.mail.zip72KB
com.ibm.expeditor.mail.zip145KB

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=421122
ArticleTitle=将 Eclipse RCP 应用程序迁移到 IBM Lotus Expeditor
publish-date=08202009