- ·上一篇教程:访问 Notes/Domino 数据的定制 DXL 框架
- ·下一篇教程:兄弟7010硒鼓清零
在 IBM Workplace 中部署更新
|
级别: 高级 |
软件开发人员, IBM
2005 年 6 月 13 日
如果您想节省时间(有谁不想),请阅读本文,学习如何设置一个系统,以便为 IBM Workplace 用户自动部署更新和应用。
IBM Workplace Managed Client (前身为 IBM Workplace Client Technology, rich edition)为通过 Web 浏览器访问 IBM Workplace 产品提供了另外一种可选的功能丰富的方案。Workplace Managed Client (也称富客户机)提供了诸如离线支持、同步、搜索和文档编辑器之类的功能。
Workplace Managed Client 的一个重要特性是能够通过一个服务器进行集中管理。这包括基于策略的管理、预配置(provisioning)和故障诊断(troubleshooting)。(要了解更多信息,请参阅 developerWorks: Lotus 文章,"IBM Lotus Workplace 中管理富客户机")另外这还包括允许自动部署更新到 Managed Client 的特性。
在本文中,我们将解释如何创建和配置用于为 Workplace 用户自动部署更新和应用的过程。这需要创建一个基于 Eclipse 的更新站点,和一个 WebSphere Portal 预配置页面(provisioning page),并由这个页面告诉 Managed Client 如何访问更新站点以及从该站点下载什么更新。这个过程使您可以控制在 Workplace 社区内部署更新和应用的方式和时间。该过程可用于将新的应用或更新部署到已有的应用程序当中。
本文假设您是一名有经验的插件应用程序开发人员,并熟悉 Workplace 和 WebSphere Portal。如果拥有关于 Eclipse、XMLAccess 实用程序和 Workplace 或 WebSphere 服务器管理方面的知识也会有所帮助。
Workplace Managed Client 架构
这一节我们将简短地阐述 Workplace Managed Client 中的一些底层技术。如果要了解更多信息,请参阅 developerWorks: Lotus 文章,"IBM Workplace Client Technology 架构"。
Managed Client 基于 Eclipse 富客户机技术。它由一组 Eclipse 插件(plugins)和功能部件(features)组成,包括提供用户界面的视图。Managed Client 按照 manifest 文件中所包含的指令,将这些组成部分装配在一个页面中。(这个页面相当于 Eclipse 平台中的“透视图”。)
manifest 文件是用 RCPML(Rich Client Platform Markup Language,富客户机平台标记语言)编写的。它是一个XML 文件,其中描述了 Managed Client 应用程序的一些属性。manifest 文件包括诸如应用程序需要哪些特性、用户界面的外观等等之类的信息。
部署更新
在安装和配置 Managed Client 时,需要来自服务器的 manifest 文件,首先下载和解析这些文件,然后下载文件中所指定的插件,并构建 Managed Client 应用程序。简单地说,这个过程是这样的:
- 用户安装 Managed Client。这样用户便有了一个 Managed Client 平台,还有一些默认的 Workplace 应用程序。
- 用户运行 Managed Client 并第一次登录到 Workplace 服务器上。
- Managed Client 从服务器获得适当的 manifest (RCPML) 文件。具体下载哪些文件由服务器的设置决定,这在后面会讲到。
- Managed Client 解析这些 RCPML 文件,使用该信息找到更新页面,然后决定下载哪些更新。如果是第一次登录,这些更新将包括 Workplace 应用程序,例如 Activity Explorer。
- 之后,每当用户登录到服务器时,客户机都从服务器获取新的 RCPML 文件,并检查是否有可用的更新。如果有,则重复第 3 步和第 4 步。
需要记住的重要事情是,对于用户来说,这个过程是完全自动的——用户永远不必决定要下载哪些更新,从哪里获得更新,等等这些问题。相反,这是通过一个预配置页面来控制的。预配置页面和更新站点都是由 Workplace 管理员来创建和维护的,从而提供对此过程的集中管理。
因此,建立自动部署 Managed Client 更新和应用的过程需要两个基本步骤(顺序可以颠倒):
- 需要创建一个更新站点,以便上传所需的插件和功能部件,而用户可以从该站点下载这些插件和功能部件,并按照 manifest (RCPML) 文件中的规定在本地运行它们。
- 必须在 Workplace 服务器上创建一个预配置页面,以便将 manifest 文件提供给 Managed Client。
下面的说明假设您运行在安装了预配置组件的 Workplace Collaboration Services 2.5 或 Workplace Services Express 2.5。这必须在 WebSphere Application Server 5.0.2.6 和 WebSphere Portal 5.0.2.2 之上运行。此外,您还需要一个开发环境,例如 Rational Application Developer 6.0 或 Eclipse 3.0 (可以从 Eclipse 网站的下载页面免费下载。) 在本文中,我们假设您使用 Eclipse 作为开发环境。
下载示例
我们将使用一个简单的插件和一个简单的 Eclipse 功能部件作为Managed Client 应用程序示例。在 Eclipse 术语中,“功能部件(feature)”是指一个基本的“可下载”组件。功能部件(主要是一种 manifest 文件)将插件与其他功能部件组合起来,以便于下载和管理组件。示例插件(com.ibm.wct.sample.plugin)是用 Eclipse 的新建插件向导生成的。示例功能部件(com.ibm.wct.sample.feature)包含该插件。您可以在这里下载这个功能部件和插件,解压它们,然后通过选择 File - Import 将它们导入到工作区。
图 1.示例插件和功能部件 
设置预配置
预配置过程允许管理员随需应变地将 Managed Client 交付给用户。这涉及到服务器管理的角色和基于策略的分发。预配置要求安装 Workplace 预配置组件(有时候也叫预配置服务器)。IBM Workplace 文档 中包含了关于如何预配置 Managed Client 的说明。您也可以参阅 developerWorks: Lotus 文章,"在 IBM Lotus Workplace 中管理富客户机",其中包含了关于预配置过程的很好的说明。
创建更新站点
如前所述,您必须创建一个更新站点,使用户可以从该站点下载 Managed Client 更新和应用程序。您可以从 Eclipse 创建这个更新站点。Managed Client 更新站点实际上就是一个 Eclipse 更新站点,所以创建站点的过程是一样的。(这也有助于更容易地将 Eclipse 功能部件迁移到 Workplace。)
典型的 Managed Client 更新站点由用于功能部件和插件的文件夹、一个名为 site.xml 的 manifest 文件以及其他文件夹组成。这些文件夹中包括用户可以下载到本地计算机上的文件。图 2 展示了一个 Managed Client 更新站点例子的结构:
图 2. Managed Client 更新站点的结构
默认情况下,Managed Client 更新站点的结构由 site.xml 文件来控制。这个文件存放在你的 IBM HTTP Server (IHS) 安装目录中。(后面会有更详细的介绍)
在开始之前,让我们花点时间澄清一下功能部件和插件之间的关系。如前所述,功能部件包含插件(有时候还包含其他功能部件)。这使得用户能够更容易地下载和管理成组的相关插件——不是逐个下载这些插件,事实上只需下载这个功能部件。Eclipse 将解析功能部件中的 manifest 文件,并下载相应的插件。Eclipse 还使用“功能部件”作为管理其配置的单位。您可以安装、卸载和禁用各个功能部件。
由于 Managed Client 更新站点和 Eclipse 更新站点完全相同,因此我们使用 Eclipse 中的 Update Site Project 功能部件来为示例应用程序创建更新站点。为此,打开 Eclipse PDE (Plugin Development Environment) 并选择 File - New - Project - Plug-in development - Update Site Project。这时会出现 New Update Site Wizard 向导:
图 3. New Update Site 向导
New Update Site 向导由以下部分组成:
- Project name 标识更新站点。当您选择 "Generate a web page listing..." 复选框时,这个名称将出现在由向导生成的 Web 页面上。
- Project contents 标识更新站点的位置。您应该将它设置为 \htdocs\en_US\lwpupdate\wct,这个路径位于 Workplace 服务器上的 IHS 安装目录中。
- Generate a web page listing all available features within the site 生成一个 html 文件,该文件列出更新站点内所有可用的功能部件和插件(参见图 4)。这只支持 Web 浏览器。
图 4. 更新站点上的功能部件和插件

- Web resources location 默认情况下设为 web。
单击 Finish 使 Eclipse 创建更新站点项目。接着,打开更新站点并双击左侧导航器中的 site.xml。然后选择编辑器中的 Features 标签页。这将显示 Site Manifest 编辑器:
图 5. Site Manifest 编辑器
Site Manifest 编辑器使您可以选择和组织您想要放在更新站点上的功能部件。为此,单击 Add 显示可用的功能部件列表。
图 6. 选择功能部件
Site Manifest 编辑器列出当前工作区内的所有功能部件。(注意,具有不同版本号的功能部件被视作不同的功能部件。)选择您想要添加到更新站点的功能部件。然后使用 New Category 按钮创建您想要显示在更新站点上的类别,并将所选的功能部件放入到这些类别中。(在内部,这将更新 site.xml 文件,即更新站点的 manifest 文件。site.xml 文件控制在更新站点上列出哪些功能部件和类别。这些类别用于将一批功能部件成组放在一起。)完成这些后,单击 Build All 创建更新站点。
为构建更新站点,Eclipse 解析包含在每个功能部件中的 manifest 文件(feature.xml),以判断与每个功能部件相关的插件是哪些。然后,Eclipse 构建每个功能部件和插件的 .jar 文件,并将它们放在更新站点上。之后,当用户从更新站点下载功能部件时,这些 .jar 文件(包括相关插件的 .jar 文件)将被装载到他们本地的客户机上。
为了检查新的更新站点,打开 Eclipse,然后选择 Help - Software Updates - Find and install - Search for new feature for install。接着输入更新站点的目录。假设您选中了图 3 中的 "Generate a web page listing…" 复选框,您也可以通过在浏览器中打开其 URL 来浏览更新站点(例如 http://hangsu.ibmirl.lan/lwpupdate/wct/index.html)。
编辑 site.xml
新的更新站点包含一个名为 Plugins 的文件夹,该文件夹包含每个版本的插件的所有 jar 文件。还有一个名为 Features 的文件夹,用于存储用于下载的功能部件。
注: 在大多数情况下,用户不应该直接下载各个插件。为了得到特定的功能,应下载包含这些插件的功能部件。
您也可以手动地将功能部件添加到更新站点中,方法是编辑 site.xml 文件。例如,下面这段代码将添加功能部件 features/com.ibm.wct.sample.feature_1.0.0。如果将这段代码添加到 site.xml,那么就会把 features/com.ibm.wct.sample.feature_1.0.0 添加到更新站点上的可用功能部件列表中:
|
URL 是功能部件所在的位置,id 是 feature.xml 中的 id 设置。category name 标识该功能部件所在的更新站点类别。
您可以通过类别浏览更新站点。默认情况下,site.xml 包括一个名为 WCT 的类别。通过编辑 site.xml,也可以添加其他类别。例如,下面的代码将添加一个名为 WCT Sample 的类别:
|
切换栏中的更新站点图标
还应考虑 Managed Client 图形化图标,这虽然是个小问题,但是也很重要。这个图标将出现在 Managed Client 的切换栏中。对应于这个图标的文件是一个 .png 文件,它应该存储在 HTTP 服务器上的 lwpupdate 目录中。这个 .png 文件的尺寸应该是 34x32 象素。
创建预配置页面
如前所述,在 Workplace 中设置自动更新过程需要两个主要步骤。第一个步骤我们已经处理好了——创建更新站点。现在我们要将注意力转移到第二个步骤,即在 Workplace 服务器上创建预配置页面。当客户机连接到 Workplace 预配置服务器时,服务器从预配置页面取相关的参数(我们在后面会加以讨论)以及预配置页面上的 “placeholder” portlets。当客户机启动时,它发送一条请求到服务器,以获取由预配置页面提供的 RCPML 和 placeholder portlets。在对客户机请求的响应中,Workplace 服务器使用 RCPML 生成一个 manifest 文件,在文件中提供可用应用程序列表。客户机使用 manifest 来决定它需要从安装站点下载哪些应用程序,并将其提供给用户。
在本节中,我们将创建一个预配置页面,其中包含一个 placeholder portlet。这个 portlet 包含在服务器站点上生成 RCPML 所需的信息。我们提供了一个示例脚本,您可以下载和运行这个脚本,以便创建自己的预配置页面。(如果对于我们在本节中使用的术语您有需要帮助的地方,请参阅 WebSphere Portal 文档。)
当在服务器上安装预配置组件时,会出现一个新的名为 WCT Place Holder 的可用 portlet。在呈现应用程序的页面上将使用这个 placeholder portlet 的一个或多个副本。在门户术语中,portlet 的副本被称为“具体 portlet 实例(concrete portlet instance)”。每个 placeholder portlet 都配置了必需的参数,以便在应用程序中呈现一个视图。
门户上有一个特殊的页面,它有一个单名 lwp.WorkPlaceRCPPages。服务器上表示客户机应用程序的页面都是作为 lwp.WorkPlaceRCPPages 页面的子页面创建的。lwp.WorkPlaceRCPPages 的默认位置是在门户服务器的根页级。
现在必须得到 placeholder portlet 的一个副本(这个副本称为 “concrete”副本),并添加描述 Managed Client 中相应视图的属性的参数(大小、位置,等等)。大多数 RCPML manifest 文件是从包含在 portlet 中的参数生成的,而预配置页面本身也有一些重要的参数,例如图标在切换栏中的显示(参阅前一节)。Managed Client 还使用预配置页面的标题作为应用程序标题,这个标题将出现在客户机应用程序切换栏中图标的下方。
注: 一开始,管理员以外的人不能访问新页面和新创建的具体 portlet,所以需要修改对页面和 portlet 的访问权,以允许用户访问该页面。例如,您可以在用户角色成员列表中添加 "all authenticated portal users"。(请参考WebSphere Portal 管理文档了解关于设置对页面的访问控制的信息。)而且,请记得在创建该页面时,选择 Support RCPML in Advanced 选项。
下面是对于 placeholder portlet 的每个副本都必须配置的一组参数:
- rcpView 是 plugin.xml 中的视图 id。
- ratio 是视图的大小。
- id.Feature_x 是包含该视图的功能部件的 id。
- version.Feature_x 是所需功能部件的版本。
- match.Feature_x 定义 portlet 的兼容性。
- visible 控制视图的可见性。
例如,完整的 portlet 设置差不多是这样的:
图 7. Portlet 设置
请参阅 WebSphere Portal 管理文档以了解关于复制和配置 portlet 的信息。为方便起见,我们提供了一个 XML 访问脚本,这个脚本可以和 portal XML 访问实用程序一起用来创建一个页面,这个页面包含 placeholder portlet 的一个新副本,并带有配置好的参数。
接下来,在 Workplace 服务器上运行 XML Access 实用程序。这样您便可以在服务器的远程运行脚本。在我们的例子中,我们将运行一个脚本,该脚本将创建 placeholder portlet 的一个包含所需参数的具体 portlet,并将其放在一个预配置页面上,然后设置对页面和 portlet 的访问控制。(要了解关于 XML Access 的更多信息,请参阅 WebSphere Portal InfoCenter。)完整的示例脚本代码在this sidefile中。
关于该脚本代码有一些事情要注意一下。脚本请求元素中的 create-oids="true" 选项指示服务器为该脚本所创建的每个资源生成新的 objectid 值,从而创建新的资源,而不是覆盖已有的资源(除非指定了和服务器上已有资源的 uniquename 相同的 uniquename)。如果已经存在相同的 uniquename,那么就会更新服务器资源,而不是创建一个新的资源。
Uniquename 是每个资源的用户指定标识符。这就可能导致命名冲突。当出现命名冲突时,XML Access 将直接覆盖所有资源,之前不会发出询问。所以您需要小心对待 uniquename。您可以使用下面这个简单的 XML Access 脚本来导出 RCP 根页下的所有内容,并检查命名冲突:
|
输出包含随预配置组件附带的应用程序,所以,当您准备将目光转移到更复杂的应用程序时,这个输出文件是一个很好的例子。
如果您想从一个客户机上运行 XML Access 脚本,那么需要从 <LWP Server 安装目录>\PortalServer\bin 复制 tools.jar 文件。这样客户机上的 JVM 就可以使用它。然后运行命令行:
|
这个命令行适用于 Windows;在其他平台上的运行也是类似的。
<output_script_name> 设置的是 XML Access 的输出。它是一个 XML Access 脚本,它也可以作为输入脚本,例如,当您从服务器上导出一个文件时,可以使用该输出文件来存储它,或者将它复制到另一个服务器。在这种情况下,我们的脚本是一个更新操作,输出文件只显示结果。您可以期望看到一个静态元素,例如 <status element="all" result="ok"/>,这表明一切运行正常。操作细节记录在输出文件开头部分的 XML 注释中。记住,您需要虚拟资源 Portal 的 Administrator 角色才能使用 XML Access 实用程序。
结束语
现在是时候检查结果了。从 Workplace 服务器下载和运行 Managed Client。您应该看到如下所示的页面:
图 8. 示例 Workplace Managed Client 页面
注意左侧导航器底端亮绿色的 "Hi" 图标。这表示我们的示例应用程序,这个应用程序已通过自动部署系统成功地部署到 Managed Client 上。这是一个非常简单的应用程序,它仅仅由一个图标和一个视图组成。然而,它足以演示如何用这个部署系统来部署应用程序和其他更新。
在本文中,我们解释了设置部署系统的基本流程,这个系统用于为 Workplace Managed Client 用户自动部署更新。我们描述了其中涉及的两大步骤:在 Eclipse 中建立一个更新站点,以及在 Workplace 中创建一个预配置页面。您可以按照我们的例子来设置您自己的应用程序,以便帮助您在扩张 Workplace 社区时,管理和控制更新及部署过程。





