IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

记录管理: 用 WebSphere Studio Application Developer 一步步地进行 IBM DB2 Records Manager V3.1 编程

IBM 的新记录保留引擎初学者编程指南

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

样例代码


级别: 初级

Naga Ayachitula (Arun) (nagaaka@us.ibm.com), 高级软件工程师, IBM Corporation

2004 年 11 月 01 日

这是一篇关于 IBM® DB2® Records Manager 编程的介绍性文章。本文中,我们将一步步地通过一个例子来介绍如何使用 WebSphere® Studio Application Developer 来进行 IBM DB2 Records Manager 编程。

简介

IBM DB2 Records Manager(IRM)是一个为商业应用软件提供生命周期管理的电子记录(e-Record)工具。DB2 Records Manager 是独一无二的,因为它是通过一个引擎,而非一个应用程序来执行生命周期管理的。它独一无二的引擎设计是为与商业应用软件进行集成而设计的,而且最适用于嵌入式解决方案。

IRM 被视为轻量级的解决方案,因为该引擎的主要作用是提供生命周期管理保留(retention)。组织可以使用单个 DB2 Records Manager 系统来支持多个业务流水线应用程序。因为 DB2 Records Manager 是作为一种引擎技术提供的,所以合作伙伴需要维护对集成的完整控制。合作伙伴可以决定需要将多少内容包含在他们的应用程序中,以及以何种方式进行。

此外,IRM 提供了以下特性:

  • IRM 体系结构提供了跨平台支持和可伸缩性。
  • 该引擎支持 Java ™ Internet Inter-ORB Protocol(IIOP)、远程方法调用(Remote Method Invocation,RMI)、简单对象访问协议(Simple Object Access Protocol,SOAP)和 Web 服务。
  • 它使用标准化的 Java2 Enterprise Edition(J2EE)设计模式。
  • DB2 Records Manager 符合美国国防部的电子记录管理 5015.2 标准。





回页首


IBM DB2 Records Manager 的编程

Records Manager 是计划包含在商业应用程序中的一组业务对象。在 Records Manager 中,程序员可以用来操作电子记录的组件是 Enterprise Java Beans 2.0(EJB 2.0)。程序员可以通过 J2EE 开发工具,用 Java 编写 Records Manager 应用程序,或者可以使用 SOAP 和/或 WSDL 1.1 进行连接。

除了 EJB 外观之外,IRM 还提供了一个 HostInterface 类,使单独编写的 Web 应用程序能够利用 Records Manager 引擎。但是由于本文的目的是让事情简单化,而且还提供一个“Hello World”风格的快速演示,所以我们将演示使用 Websphere Studio Application Developer 对 Records Manager 进行访问。





回页首


所需工具

开始之前,您应该已经安装并运行 Records Manager 引擎和数据库。

对于该演示,因为正在构建一个单独的 J2EE 应用程序,所以您必须有一台 J2EE 应用程序客户机。我们将使用 WebSphere Studio Application Developer 集成开发环境来构建和测试我们的应用程序。

您还需要 IBM DB2 Records Manager API,它包含在 IRMAPI.jar 中。该文件通常位于 IBM DB2 Records Manager 安装目录中。如果在不同的系统中编写该解决方案,那么还要将 IRMAPI.jar 复制到开发系统中。





回页首


问题定义

我们要编写的应用程序将完成三件事:

  1. 首先,它将联接一台特定的 Records Manager 服务器。
  2. 然后,它将使用 Records Manager Server Enterprise Java Bean 来列举可用的 RM 数据库。
  3. 最后,它将连接其中一个数据库。





回页首


解决方案

完整的解决方案包含在本文所提供的 zip 文件中。

首先,我们将介绍整个解决方案的主要部分:HelloIRM.java 文件。HelloIRM.java 通过下列步骤执行它到 IBM DB2 Records Manager 的连接:

  1. 首先,它连接到一台 JNDI 服务器。
  2. 然后,联系该 JNDI 服务器以提供 LoginManager 工厂。
  3. 该 LoginManager 工厂(LoginManagerHome)依次被用来创建 LoginManager。
  4. 该 LoginManager 工厂(LoginManagerHome)依次被用来创建 LoginManager,最后,我们使用 Login Manager 来登录到我们希望使用的数据源。

WebSphere Studio Application Developer 5.x 中的步骤如下所示,我们将一个屏幕一个屏幕地向您展示:

步骤 1

创建新的 J2EE Application Client 项目。

选择 File =>New =>Project,或者使用位于 Open Perspective 按钮正上方、工具栏左端的 New Wizard 按钮。



New Project对话框中,选择在左栏中的 J2EE,并选择右栏中的 Application Client Project,然后单击 Next



步骤 2

Application Client project creation对话框中选择 Create J2EE 1.3 Application Client project。然后单击 Next



步骤 3

提供一个项目名(HelloIRM)以及一个新的 Enterprise Application 项目名(HelloIRMEAR)。然后单击 Next



步骤 4

通过选择主菜单中的 Window=>Open Perspective =>Server切换到服务器透视图。



步骤 5

右击该应用程序项目(而不是 EAR)。然后选择 “Import”

通过选择 Import对话框右侧上的 helloIRM.java,将 helloIRM.java 导入 appClientModule 目录中。

通过选择 Import对话框右侧上的 MANIFEST.MF 文件,将 MANIFEST.MF 导入 META-INF 目录中。









步骤 6

右击项目名(HelloIRM),并从弹出式对话框中选择 Properties



步骤 7

Properties for HelloIRM对话框上,选择左栏中的 Java Build Path

选择右栏中的 Libraries选项卡。



步骤 8

将 IRMAPI.jar 添加至库路径中。

单击 Add External Jars按钮。

Jar Selection文件对话框中,浏览 IRMAPI.jar 的文件系统,并选择“IRMAPI.JAR”。

单击 Open,将此 jar 文件添加到构建路径中。





步骤 9

右击 EAR 项目名(HelloIRMEAR),并单击 Import。



步骤 10

通过选择 Import对话框右侧的 IRMAPI.jar,将 IRMAPI.jar 导入 EAR 项目中。



步骤 11

通过从主菜单选择 Window=>Open Perspective =>Java切换到 Java 透视图。



步骤 12

选择 HelloIRM项目,并选择主菜单中的 Run

Run菜单列表中选择 Run..



步骤 13

Launch Configuration对话框中,选择左侧的 WebSphere V5 Application Client,并单击对话框下方的 New按钮。



步骤 14

命名该配置。本实例中,其配置名为‘PermRecordsManagerConfiguraton’。

为右侧的 Enterprise Application:选择 HelloIRMEAR。EAR 文件在我们的 HelloIRM 项目中。



步骤 15

单击位于 Launch Configuration对话框右下方的 Run按钮。



程序清单


清单 1. helloIRM.java
import com.ibm.gre.engine.ejb.facade.LoginManagerEJB;
import com.ibm.gre.engine.ejb.facade.LoginManagerEJBHome;
import com.ibm.gre.engine.ejb.facade.ClientControllerEJB;
import com.ibm.gre.engine.util.ServiceLocator;
import com.ibm.gre.engine.util.XMLUtil;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.rmi.PortableRemoteObject;
public class HelloIRM {
    public static void main(String[] args)
    {
        try {
            System.out.println("Hello, and welcome to IRM 3.1!");
            
            if (args.length < 3)
            {
            	System.out.println("This application client takes three arguments");
            	System.out.println("<appclientRunner> HelloIRM.ear [appclientopts] serverName 
            	   serverPort userid password [datasource]");
             System.out.println("If datasource is not provided, then the first datasource listed on the 
                 server is used.");
            }
            String serverName = args[0];
            String serverPort = args[1];
            String userid = args[2];
            String password = args[3];
            String targetDatasource = null;
            if (args.length > 3) {
                targetDatasource = args[4];
            }
            
            String jndiName = "recordmanager/ejb/facade/LoginManagerEJB"; 
            LoginManagerEJBHome loginManagerHome = null;
            ServiceLocator sl = ServiceLocator.getInstance(serverName, serverPort);
            loginManagerHome = (LoginManagerEJBHome) PortableRemoteObject.narrow(
                    (LoginManagerEJBHome) sl.lookup(jndiName),
                    LoginManagerEJBHome.class);
            System.out.println("Hello IRM!  The available servers at " + serverName + " are..");
                                                                                                    
            LoginManagerEJB loginManager = loginManagerHome.create();
            String xml = loginManager.getDataSourceList();
            NodeList datasources = XMLUtil.getNodeList(XMLUtil.getDocument(xml), "Item");	
            for (int i=0; i< datasources.getLength(); i++) {
                    Node datasource = datasources.item(i);
                    Node name = datasource.getAttributes().getNamedItem("Name");
                    if ((targetDatasource == null) && (i == 0)) {
                        targetDatasource = XMLUtil.getValue(name);
                    }
                    System.out.println(XMLUtil.getValue(name));
            }
            if (targetDatasource != null) {                       
                ClientControllerEJB clientController = loginManager.login(userid,password,
                    "recordmanager/jdbc/db2/" + targetDatasource,"","en");
		System.out.println("Login returned clientController." );
                clientController.logout();
                System.out.println("Logged out.");
            }
            System.out.println("---END OF OUTPUT---");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}   

结束语

WebSphere Studio Application Developer 是一个用于开发复杂、多层 J2EE 应用程序的极佳工具。它还擅长于快速开发简单的应用程序。IBM DB2 Records Manager API 为编程人员提供了许多访问 Records Manager 信息的方法。特别是,使用 IBM DB2 Records Manager EJB 接口的外观设计十分简单。配备了 WebSphere Studio Application Developer、实用函数和 IRM API 外表程序包的程序员,可以快速地开始探索 IBM DB2 Records Manager 的世界。






回页首


下载

名字大小下载方法
HelloIRM.zip2 KB
关于下载方法的信息


参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文

  • DB2 Records ManagerWeb 站点是查找与 IBM DB2 Records Manager V3.1 以及记录管理相关信息的有关资源的理想场所。


关于作者

Naga Ayachitula(Arun)是在位于纽约霍桑市 IBM TJ Watson Research Center 的 IBM 研究部门(自主计算)工作的高级软件工程师。Arun 拥有计算机科学硕士学位。Arun 参与了媒体业的企业内容管理、记录管理和数字视频监视解决方案的开发。您可以通过 nagaaka@us.ibm.com 与 Arun 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款