高效使用 SBLIM CIM Client
为 CIM Client 开发生成代码框架的技巧
Qi Feng Xu 和 Yi Zhu
2009 年 12 月 03 日发布
简介
Distributed Management Task Force (DMTF) 开发了能够支持互操作 IT 管理的标准。DMTF CIM 是一种概念上的信息模型,用于描述企业和 Internet 环境中的计算和业务实体。它使用面向对象技术提供了一种一致的数据定义和结构。CIM 的通用定义使供应商能够在整个网络中的多个系统之间交换语义丰富的管理信息。
SBLIM - Standards Based Linux® Instrumentation for Manageability(读作 sublime)。一个由 IBM 发起的开源项目,旨在通过支持 Web-Based Enterprise Management (WBEM) 来增强 GNU/Linux 系统的管理能力。
在本文中,了解如何使用 SBLIM CIM Client 库根据预定义的模板生成一个代码框架。同时介绍了有关如何使用创建的类编写代码的技巧。
您可以使用这个代码框架作为一个粘合层,进一步为 CIM 客户端应用程序开发提供便利。这个粘合层可以使您更轻松地实现一个 CIM 客户机应用程序(仅需更少的编程),并在未来维护应用程序。
SBLIM CIM Client 概览
SBLIM CIM Client 是一个 WBEM 服务的 Java 实现,该服务包含了一个与 IETF RFC 2614 兼容的 SLP 客户机,用于 CIM 服务查找。CIM Client for Java 是一个用于生产的成熟库,包含若干个商业产品和开源项目。在所有利用 CIM 技术的领域中,它得到了管理应用程序的广泛使用。用户可以轻松地与 CIM 服务器通信并提取信息。SBLIM CIM Client 帮助您完成繁重的任务,比如解析基于 XML 的 CIM 响应消息,并从 Java 对象生成 CIM 请求。
使用 SBLIM CIM Client 实现配置也非常简单。许多属性都可以在配置文件中设置。您可以设置 HTTP 连接的池大小、跟踪客户机和服务器之间的通信历史,等等。通过使用 CIM,应用程序开发人员可以关注业务逻辑实现,而将所有其他繁重的、易于出错的任务留给 SBLIM CIM Client。
SBLIM CIM Client 库的常见结构如图 1 所示。
图 1. SBLIM CIM Client 库的常见结构
生成代码框架
下面是生成代码框架的三个步骤。根据需求定义代码模板。
通过使用 SBLIM CIM Client 库直接挖掘 CIM 服务器检索 CIM 元素定义。
导入框架模板和 CIM 元素信息,并为 CIM 客户机开发生成面向对象的代码框架集。
定制代码模板
您需要在刚开始的时候量身定制代码模板,以便确定创建的代码的外观。您可以在这个子过程中使用一些方法,例如 Extensible Stylesheet Language Transformations (XSLT) 和基于 Java 的模板引擎 Velocity。这两者中的任意一个都可以用作一个独立的工具来生成代码框架。在多数情况下,您可以在类模板中为 CIM 操作定义常用方法,比如枚举 CIM 对象路径或实例、获得属性值,以及调用方法。也可以将额外的特定代码段集成到类模板中;这可以非常方便、灵活地满足特殊需求。
通常,可以在模板中为 CIM 操作定义以下基本的方法。getInstances()在目标 CIM 服务器上枚举 CIM 实例,这些实例属于指定的类或其子类,然后返回这些实例的副本。deleteInstance()在目标 CIM 服务器上删除 CIM 实例。getAssociatedPaths()在目标 CIM 服务器上枚举出通过指定 CIM 关联与源类关联的所有 CIM 对象路径。getAssociatedInstances()在目标 CIM 服务器上枚举出通过指定 CIM 关联与源类关联的所有 CIM 实例。getAssociationPaths()在目标 CIM 服务器上枚举出所有与源类关联的所有 CIM 关联路径。这种方法只存在关联类中。getAssociationInstances()在目标 CIM 服务器上枚举出所有与源类关联的所有 CIM 关联实例。这种方法只存在关联类中。Invoke调用由 CIM 实例公开的外部方法调用。
清单 1 展示了 Velocity 的一个经过定制的代码模板。
清单 1. 针对 Velocity 引擎定制的代码模板的样例代码public class ${cls.Name} {
/**
* Itererate all ${cls.Name} instances.
*
*