内容


使用 AIDE 实现高效率,第 1 部分

构建接触点

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 AIDE 实现高效率,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 AIDE 实现高效率,第 1 部分

敬请期待该系列的后续内容。

开始之前

了解本教程中包含的内容以及如何最好地利用本教程。

关于本系列

本教程是系列教程的第 1 部分,本系列教程介绍使用 IBM® Autonomic Integrated Development Environment (AIDE) 工具包开发自主计算技术的技巧。本教程是为 AIDE 新用户编写的一站式教程,旨在使您能够得心应手地使用 AIDE 工具包、相关技术、设计理念以及工具包附带的示例。

本系列的其他教程将描述如何在多个平台(包括 Linux®、MySql 和 Apache)上部署接触点。完成本系列教程的学习后,您应该对一般平台和开放源代码平台上的自主计算技术开发有充分的了解。

这些平台上的自主计算的主要好处是基于标准的易管理性。许多操作软件系统或者具有专用的点管理工具,或者根本上不进行管理。其结果是资源被浪费,因为自动管理过程并没有发挥作用。比这更糟糕的是,这样的系统很多都没有经过优化,容易受到部分或全面故障和外部攻击的威胁。

自主计算的易管理性要求包括自我配置 (self-configuration)、自我修复 (self-optimization)、自我优化 (self-optimization) 和自我保护 (self-protection)——因此也称为 self-CHOP。此要求奠定了自主计算思想的基础,即仅仅生产和部署软件和系统是不够的,必须为这些实体(软件和系统)增加标准的开放式管理功能,而且必须超越使用专用工具和方法所实现的功能。IBM 的此类管理功能远景设想在很大程度上由接触点 概念构成,接触点是软件的一个相对较瘦的层,它与托管资源进行交互,以帮助达到自动管理要求。

本系列教程的目标读者是具备一定编程知识且希望更好地理解不断增长的可管理系统和软件需求的任何人。本系列教程的目的是帮助自主计算程序员尽可能快地具备较高的工作效率。基于这一点,本教程将以开放的方式讨论使用此软件时所遇到的任何问题,并提出变通方法和解决方案——这些是无法从帮助文件中获得的!

关于本教程

本教程介绍了 AIDE 工具包的入门使用方法,从安装和开始使用工具包讲起,详细介绍如何创建完整的接触点。在学习如何使用本技术的初步知识的过程中,您将了解如何使用和修改此程序包附带的接触点示例。

由于本教程属于入门级,因此采用通用平台:任何支持 Eclipse 和 AIDE 工具包的平台。例如,Microsoft® Windows® XP 就已经足够。

在本教程中,您将了解如何使用 AIDE 工具包创建功能完整的自主计算接触点。此外,还将了解如何修改和测试接触点代码。

先决条件

本教程是针对具备一定的 Java™ 编程、Eclipse 和系统管理知识的读者编写的。具备使用 Eclipse 等集成开发环境(Integrated Development Enviroment,IDE)和各种工具及插件的能力将有所帮助,但不是必需的。同样,基本了解以下内容也非常有用:

  • SOAP
  • Web 服务寻址 (WS-Addressing)
  • Web 服务分布式管理 (WSDM)

系统要求

要运行本教程中的示例,必须满足平台的最低要求:一台运行 Windows XP 且安装了 AIDE 软件和 Apache Tomcat V5 的计算机。

注意:您可以使用 Tomcat V4,但是还必须使用兼容程序包。

入门

AIDE 是基于 Eclipse 的集成开发环境,用于创建和维护自主计算接触点。AIDE 全面支持建模和代码生成,可同时满足架构师和程序员的需要。接触点还可以部署到一系列应用服务器上。

要快速开始使用 AIDE,请使用 Tomcat V5。如果您不想更新您的 Java 软件开发工具包 (JDK) 或 IBM Java Runtime Environment (JRE),可以从 Apache Tomcat 主页下载 Apache Tomcat V4 兼容程序包。

安装 AIDE

AIDE 的安装过程与安装其他 Eclipse 插件的过程类似,不过没有真正的安装程序。AIDE 压缩文件包含两个文件夹:一个名为 Features,另一个名为 Plugins。将 Features 文件夹的内容复制到 Eclipse 安装的 Features 文件夹中(ECLIPSE_HOME/features,或运行 Windows 的计算机上的 %ECLIPSE_HOME%/features)。采用类似的方法,将 Plugins 文件夹的内容复制到 Eclipse 安装的 Plugins 文件夹中($ECLIPSE_HOME/plugins,或运行 Windows 的计算机上的 %ECLIPSE_HOME%/plugins)。

重新启动 Eclipse。插件已经加载,现在应该能够在 Help > Help Contents 菜单中看到 AIDE help/cheatsheets/docs 文件夹。这些帮助文档中包括 WS-RF/WSDM/AC 的概述、运行时环境、工具基础知识和示例等。

教训和不足

用于安装工具包的安装文件夹的名称应简短,如 C:\MyApps。我使用长路径和名称中含有内嵌的空格的文件夹时,调用示例接触点遇到了一些问题。重新安装了工具包后,这些问题也随之消失了。因此文件夹名称应保持简短!

启动 AIDE 后,请密切注意 Eclipse 控制台窗口,注意其中的任何错误消息。工具包会生成许多信息,其中夹杂了偶尔出现的错误消息(例如,出现异常时)。

构建第一个接触点

AIDE 联机帮助文件详细地介绍了创建项目和基本接触点的步骤。本教程的目的是帮助您快速启动和运行 AIDE,因此我将简单介绍创建基本接触点的主要步骤,使您无需 参考帮助便可以动手操作。

注意:运行各种向导的同时又要查看联机帮助可能是一件很麻烦的事情。如果您需要频繁地查看帮助,请考虑在运行向导之前打印相关的帮助页面。

创建 Manageability Endpoint Project

现在已经安装了所有必需的软件,请打开 Eclipse Workbench。完成下面的步骤,以创建新的 Manageability Endpoint Project:

  1. 单击 File > New > Autonomic Integrated Development Environment
  2. 选择 Manageability Endpoint Project,然后单击 Next
  3. 键入项目名称 PlatformProject
  4. 单击 Finish

现在已经有了一个易管理端点的容器;必须对其进行填充。首先创建接触点类型。

创建接触点类型

在 Eclipse Workbench 中完成以下步骤:

  1. 单击 File > New > Autonomic Integrated Development Environment
  2. 选择 Touchpoint Type,然后单击 Next
  3. 键入 http://tempuri.org/PlatformProject 作为接触点类型名称。
  4. 单击 Finish,以使接触点类型仅包含最少的内容。

如果您愿意,可以在 Manageability Endpoint Builder 属性中配置缺省的命名空间。为此,请完成以下步骤:

  1. 单击 Window > Preferences
  2. 在 Preferences 窗口中,展开 Autonomic Integrated Development Environment,然后选择 Manageability Endpoint Builder
  3. 键入想要使用的缺省命名空间(例如,http://ibm.com)。

创建接触点功能

在 Eclipse Workbench 中完成以下步骤:

  1. 单击 File > New > Autonomic Integrated Development Environment
  2. 选择 Touchpoint Capability
  3. 单击 Next 创建空功能,然后再次单击 Next
  4. 键入 http://tempuri.org/PlatformProject 作为命名空间。
  5. 单击 Finish

创建了接触点功能后,接下来创建接触点实现定义。

创建接触点实现定义

在 Eclipse Workbench 中完成以下步骤:

  1. 单击 File > New > Autonomic Integrated Development Environment
  2. 选择 Touchpoint Implementation,然后单击 Next
  3. 单击 Finish

您已经利用创建向导完成了本接触点的初步创建工作。现在已经准备好,可以开始生成 Java 代码和相关的实用程序了。您的接触点模型差不多已经完成。

使用接触点

了解如何生成和运行接触点。

生成接触点

在 Eclipse Workbench 中完成以下步骤,以生成接触点实现定义:

  1. 右键单击 Touchpoint Implementation 定义,然后单击 Generate Touchpoint,以启动 Generate Touchpoint Implementation Wizard。
  2. 单击 Add Touchpoint Type
  3. 添加您在创建接触点类型部分中创建的接触点类型。
  4. 单击 Finish

单击 Finish,以开始自动代码生成过程,完成后您应该在工作区窗格中看到新的文件和文件夹,如图 1 所示。

图 1. 生成的文件
生成的文件

请注意,模型与生成的代码是彼此分离的。这两个实体相互之间是独立存在的,这有利用于使用模型驱动的开发方法,而且允许将模型的所有权与其关联实例化过程(代码)的所有权分离开来。因此,架构师和设计人员可以控制和拥有模型,而程序员者则负责代码和任何相关的自定义工作。 这样的安排符合新兴的体系结构驱动的软件开发趋势。

AIDE 另一强大的功能方面是其大量地使用向导技术。和任何其他使用向导的情况一样,这种做法有利于高效准确地设计和开发工作流。AIDE 的未来版本很可能扩展这一功能,使接触点生成过程进一步自动化。

运行接触点

现在已经准备好在 Apache Tomcat(或所选择的任何 Web 容器)上运行接触点了。在 Eclipse Workbench 中完成以下步骤:

  1. 打开命令提示符,并运行 WebContent\WEB-INF 文件夹中的 deploy.bat。
  2. 右键单击此项目,然后单击 Run As > Run on Server

如果 Apache Tomcat 没有运行,在注册所需的服务器之后,步骤 2 将为您启动此服务器。此过程将启动 Run On Server 向导,如图 2 所示。

图 2. Run On Server 向导
Run on Server 向导
Run on Server 向导

单击 Finish,以在 Apache Tomcat 服务器上运行接触点。如果全部安装正确,您应该看到图 3 所示的内容。

图 3. 已完成的接触点
已完成的接触点
已完成的接触点

您现在已经有了一个自主启动面板。接下来让我们对接触点进行进一步的介绍。

接触点模式

了解如何创建接触点模式并避免常见的接触点相关缺陷。

创建并浏览接触点模式

首先单击 Create & browse,以显示模式和允许的操作。Create 链接会向软件工厂发出通知,而后者则随即创建易管理端点的新实例。它还会在表格中显示端点的属性值,并提供用于操作端点的表单控件。这是一个基本管理器。

问题:接触点未部署

如果忘记在 Apache Tomcat 上部署接触点,您可能会看到图 4 中显示的异常信息。

图 4. 异常
异常
异常

这个问题很容易解决。直接按照运行接触点部分中列出的步骤运行 deploy.bat。接触点部署成功后,应该能够单击 Create & browseView WSDL,而不会出现异常。

问题:运行了多个 Apache Tomcat 实例

有时候,可能会看到图 5 中显示的错误消息。

图 5. 试图运行 Tomcat 两次
试图运行 Tomcat 两次
试图运行 Tomcat 两次

这个问题同样容易解决。找到 Tomcat 的运行实例,停止它,然后重试。如果由于某些原因,Eclipse 本身正在运行 Tomcat,而使您无法运行您的接触点,请重新启动 Eclipse,以解决这个问题。

取消接触点的部署

完成与接触点相关的操作后,请打开命令提示符并运行 WebContent\WEB-INF 文件夹(与包含 deploy.bat的文件夹相同)中的 undeploy.bat,即可以“取消部署”接触点。

模型驱动的开发

创建模型的步骤实际上与您创建接触点的步骤相同。此模型的元素包括:

  • 接触点类型
  • 接触点功能
  • 接触点实现指南

AIDE 工具包随附了三个已进行预配置的接触点示例:

  • Apache Derby Database 示例
  • WeatherStation 示例
  • Generic Log Adapter (GLA) Touchpoint 示例

我稍后将讨论 WeatherStation 示例,但您可以根据联机帮助中介绍的步骤自己提取、导入和构建这些模型。

生成代码时,您可能感觉像在对模型进行实例化,以便用于执行环境。接触点是托管资源的抽象。使用 AIDE 随附的 WeatherStation 示例时,将显示如图 6 所示的关联模型实体。

图 6. WeatherStation 接触点模型元素
WeatherStation 接触点模型元素
WeatherStation 接触点模型元素

您将采用此模型来创建与管理系统环境相匹配的可执行接触点。换言之,您的管理系统能够执行接触点,并且使用它从基础托管资源获得数据和控制基础管理资源的操作。

缺点和不足

乍一看,与模型驱动开发关联的很多步骤和向导交互可能显得比较低效。请不要气馁:这样做是值得的,因为这种软件制作方式正变得越来越流行。 如果您需要有关此主题的详细信息,请参阅联机帮助,其中提供了许多介绍 Eclipse Modeling Framework (EMF)、服务数据对象(Service Data Objects,SDO)等方面的优秀文章和成功示例。这些文章不仅本身具有可读性,而且它们还可以帮助您了解 IBM 正在使用的接触点技术。

更改接触点部件

正如前面提到的,AIDE 使用基于 Eclipse 的模型工具(称为 Eclipse Modeling Framework)来生成接触点。联机帮助包含了有关 AIDE 如何使用 EMF 的详细介绍。

在此部分中,我将使用 AIDE 工具包附带的 WeatherStation 示例接触点。帮助文件对本示例的构建和部署方法进行了详细的介绍。遵循这些说明和前面的步骤,您就能够运行此接触点,如图图 7所示。

图 7. WeatherStation 接触点
WeatherStation 接触点
WeatherStation 接触点

对此接触点进行测试,单击各个按钮,并观察由此进行的各项操作和任何相关的数据更改。例如,单击 Kickme() 可重新加载模式数据并执行 Java 代码,应该会看到控制台窗口中会快速闪过一些文本。向上滚动控制台窗口,可以看到 Kickme() 方法生成的文本“I've been kicked!”。将在下一部分对此文本进行修改,以了解更改和重新编译生成的基础源代码是多么简单。

您还可以更改模式中的一些数据。在 Insert 框中键入一些文本——例如,Hello World!。单击下拉控件显示模式项,然后在下拉列表中选择 Description,如图 8 所示。

图 8. 设置数据
设置数据
设置数据

单击 Insert 以启动更新操作,从而更改 Description 模式变量字段。向下滚动至模式中的 Description 字段,以查看修改后的文本。这是我们通常称之为 set 操作的一个示例——修改托管数据。您可以想象得到,在实际系统中,此操作可能需要十分慎重。如果设置了错误项或者对某个项应用了错误的数据,可能会带来实际损失。

因此,允许 set 消息时必须考虑关联的身份验证、授权和审核过程。许多网络供应商只允许读权限,而且要求使用其产品的附加配置才能进行源自管理系统的更新。

这种做法有很多原因,而不仅仅是为了避免使用 set 消息的拒绝服务(Denial of Service,DoS)攻击(或将影响降至最低)。如果禁止 set 消息,此类消息将很快被丢弃,因而可最大限度地降低处理量。

生成的 Java 代码的简单说明

如联机帮助中所述,Java 源代由三个主要部分构成:

  • ibm:AIDE 生成的用于实现易管理端点的代码的位置。
  • proxy:易管理端点的 Java 代理的位置。
  • tests:易管理端点的 Java 测试的位置。

应该仅编辑 ibm 项目。EMF 允许修改 .impl 类,同时仍然允许以后更新模型。换言之,您可以立即更改 .impl Java 代码,也仍然可以在将来更新模型和重新生成代码。下一部分将介绍 EMF 如何满足这种表面上似乎自相矛盾的要求。

自定义接触点代码

如果您已经执行了本项目的联机帮助中介绍的步骤(将 WeatherStationImpl.java 文件从提取的文件复制到生成的项目文件夹),应该看到一个名为 kickme() 的方法,如清单 1 所示。更改清单 1 中以粗体显示的代码。

清单 1. WeatherStationImpl.java 中的一个方法
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated NOT
   */
public void Kickme() throws BaseFault
{
  this.erratic = true;
  System.out.println("I've been kicked!");
}

WeatherStationImpl.java 类派生自 EMF EDataObjectImpl 类。

需要注意的是清单 1 中的注释行:@generated NOT。这个注释行是发送给代码生成器的指令,用于指示此标记后面的代码是用户代码。如果重新生成此代码,代码生成器将检测到冲突,并直接丢弃此方法的生成版本。这种行为提供了一个便利的机制,可使用户代码和生成代码和平共处。

现在将更改 kickme() 方法的内容。使用 Eclipse(如果愿意,也可以使用文本编辑器)完成以下步骤:

  1. 打开 JavaSource\ibm\com\impl 文件夹中的 WeatherStationImpl.java 文件。
  2. 搜索文本“I've been kicked”,将其更改为 Ouch, I've been kicked!,然后保存此 Java 文件。
  3. 取消部署 WeatherStation 接触点。
  4. 打开 WeatherStationModels 项目。
  5. 右键单击 WeatherStation.actpim 文件,然后单击 Generate Touchpoint
  6. 接受与您的环境相对应的缺省设置。
  7. 部署 WeatherStation 接触点。
  8. 单击 Kickme() 时,应该在控制台上看到更新后的字符串,即“Ouch, I've been kicked!”。

祝贺您!尽管您被踢了一脚,但是您已经成功地完成了对自主计算接触点的首次代码更改!另外,您还了解了如何从模型重新生成接触点。您可以借此机会进行深入研究,从而了解一些信息技术 (IT) 管理的主要原则。不过,首先让我们来看看如何使项目返回到其未更改时的状态。

返回到未更改的项目

返回到原始项目状态非常容易。尽管您仅进行了一些细微的更改(在本例中),但是您需要了解如何返回到以前的状态,这在以后想要撤消更改的情况下尤为有用。要返回到未更改的项目,请完成以下步骤:

  1. 从 Apache Tomcat 取消部署接触点。
  2. 在 Eclipse Workbench 中停止正在运行的 Apache Tomcat 实例。
  3. 从 Apache Tomcat 删除接触点,如图 9 所示。
    图 9. 删除 Tomcat 接触点实例
    删除 Tomcat 接触点实例
  4. 关闭任何打开了项目所属文件的编辑器。
  5. 右键单击生成的项目,然后单击 Delete
  6. 提示选择内容时,单击 Delete all
  7. 重新启动 Eclipse Workbench。
  8. 重新生成接触点。

请注意,此过程将撤消任何用户代码更改,因此请确保保存了任何希望保留的已修改文件。现在应当回到新生成的干净项目。当然,现在必须在 Apache Tomcat 上重新部署项目并重新注册 Tomcat 实例。

Get、set 和 event

就其本质而言,IT 管理实际上是有关分布式计算的问题。管理器实体通常驻留在位置 x,而托管实体却驻留在位置 y。因此,为了进行管理,必须将数据从 x 提取到 y,然后再反向提取数据。按照传统的做法,将使用一个简单的模型来解决这个问题,这个模型允许对托管数据(或托管实体)进行以下操作:

  • 更新(通过 set 操作)
  • 检索(通过 get 操作)
  • 向管理器发出相应通知(通过 event 操作)

Get

到目前为止,本教程中已经对 getset 操作进行了介绍。get 操作等效于从托管实体、设备或代理实体读取数据。

在网络管理中,与读取对应的操作称为轮询。在这个过程中,管理器显式地选择一个给定的设备或软件实体并向其请求数据。远程设备或软件实体接收请求,收集所需数据(如果能够),然后向管理器发送响应消息。如果此类消息启用了安全功能,托管实体可能需要做更多的工作,对操作进行身份验证和授权等。

毫无疑问,在大型网络上,轮询可能是一项开销非常大的操作。从更细微的层次上看,轮询也可能消耗托管实体的大量资源——例如,如果需要遍历许多表格或者必须计算大量复杂值。

Set

set 操作负责修改实体或设备上的数据。set 操作的应用范围十分广泛,包括从修改网络端口的管理状态到禁止数据包转发等。

set 操作的另一个常见用途是初始化长时间运行的操作,如 FTP 文件传输。要求在给定设备上更新固件或者在网络设备上备份配置时,可能需要进行这样的操作。

Event

那么,托管实体上发生重要的数据更改时,将会出现什么情况?通常情况下,这样的更改可能带来明显的结果,例如,部分硬件故障、意外温度升高或给定端口出现拥塞等。托管实体如何通知管理器呢?答案在于使用 event 或通知。本系列教程的后续部分将更详细地讨论这个重要主题。

总结

本教程向您介绍了 IBM AIDE 工具包。您现在应该对基于 Eclipse 的环境有了大致的认识。任何软件系统都不是完美无缺的,我尝试描述一些潜在的问题和阻碍,并提供了一些解决方法。

管理系统技术的一个重要方面是对这一重要领域的普通理念进行基本描述。在本教程中,您了解了此理念的一些细节,例如 getset 操作等。您还了解了如何对已生成的代码进行微小的更改。随着本系列教程的继续,我将对此展开论述,向您介绍如何构建 Linux、MySql 和 Apache 接触点。


相关主题

  • The autonomic computing edge: Keeping in touch with touchpoints(developerWorks,2005 年 8 月):这篇前沿 文章描述了接触点的概念以及接触点封装托管资源的方式,另外还介绍了设计接触点时需要考虑的一些事项。
  • Autonomic Computing Toolkit:此工具包包含了一系列 IBM 自我管理自主计算技术组件、工具、场景和文档,专门为希望了解自主行为并在其产品和系统中进行采用和开发的用户而设计。
  • IBM Autonomic Integrated Development Environment (AIDE):一组符合 Web 服务分布式管理(Web Services Distributed Management,WSDM)标准的软件开发工具。其中包括 IBM Manageability Endpoint Builder(用于构建允许产品公开易管理接口的端点)和 IBM Manageability Endpoint Simulator(以前称为 IBM Touchpoint Simulator)等工具。
  • IBM 试用产品下载:使用 IBM 试用软件开发您的下一个项目,可直接从 developerWorks 下载这些试用软件。
  • developerWorks autonomic computing 专区:访问 developerWorks autonomic computing 专区,以了解自主计算领域的最新发展和技术。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, XML, Java technology
ArticleID=166555
ArticleTitle=使用 AIDE 实现高效率,第 1 部分: 构建接触点
publish-date=10092006