公共客户机接口(CCI)

可创建应用程序以使用 IMS™ TM 资源适配器与使用公共客户机接口(CCI)的 IMS 交互。

要通过 IMS TM 资源适配器来访问 IMS 事务,可以亲自编写应用程序的源代码,而不使用由开发环境生成的应用程序代码。这与使用开发环境(例如,Rational® Application Developer)生成应用程序以便消除不必要编码的过程有所不同。

为了亲自编写代码,您的应用程序必须使用公共客户机接口(CCI)编程接口。您可以通过 CCI API 从企业 bean、JavaServer 页(JSP)技术和 servlet 等 J2EE 客户机访问 IMS 等后端企业信息系统(EIS)。

遵循 CCI 编程接口模型的应用程序都具有共同结构,与使用的 EIS 无关。J2EE 连接器体系结构(JCA)规范定义了应用程序所必需的两种对象: 这些对象允许应用程序服务器管理资源适配器的安全性、事务上下文和连接池。使用 IMS TM 资源适配器的 CCI 编程接口的应用程序首先获取 IMSConnectionFactory 对象。可以通过两种方式获取 IMSConnectionFactory 对象:

IMS 连接

随后可以从该 IMSConnectionFactory 对象创建 IMSConnection 对象。可以在 IMSConnectionSpec 对象(作为参数传递至 getConnection 方法)中指定 IMSConnection 对象的属性,或使用在 IMSConnectionFactory 中定义的缺省值。在获取了 IMSConnection 之后,可以从该 IMSConnection 创建 IMSInteraction。IMSInteraction 表示即将在该连接上执行的交互。对于 Connection 对象,交互可以从 IMSInteractionSpec 类接受定制对象。

输入和输出

为了执行交互,应用程序将调用 IMSInteraction 对象的 execute() 方法,向其传递输入和输出对象以保存数据。创建的输入字节数组必须包含发送至 IMS 的输入消息中每个字段的值。类似,还必须创建输出字节数组以保存 IMS 所返回的响应消息。输出消息中每个字段的值是从输出字节数组中抽取的。

可以亲自编写输入和输出字节数组,即使不打算将 RAD 用于应用程序开发,也可以使用 Rational Application Developer(RAD)中的 J2C 选项为 CCI 应用程序的输入和输出消息创建 Java™ 数据绑定。

对从 IMS 系统检索数据的应用程序的要求:
  • 使用 IMSConnectionFactory 对象来创建 IMSConnection 对象。
  • 使用 IMSConnection 对象来创建 IMSInteraction 对象。
  • 使用 IMSInteraction 对象对后端 IMS 系统执行事务。
  • 关闭 IMSInteraction 和 IMSConnection 对象。

样本 CCI 应用程序代码

以下示例说明如何使用 J2EE CCI 接口对 EIS 执行命令:
public void execute() {
   try {
   		ConnectionFactory cf = null;
   if (isManaged) {
//Use JNDI lookup to get ConnectionFactory instance - assumes connection factory has JNDI name of MyIMS
      Context ic = new InitialContext();
      cf = (ConnectionFactory) ic.lookup("MyIMS");
            } else {
//Create and set values for ManagedConnectionFactory
      IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory();
      mcf.setDataStoreName("MyDSName");
      mcf.setHostName("myHostNm");
      mcf.setPortNumber(new Integer(1234));
//Create connection factory from ManagedConnectionFactory
      cf = (IMSConnectionFactory) mcf.createConnectionFactory();
   }
   Connection connection = cf.getConnection();

//Create interaction with IMS to run IVTNO transaction
   IMSInteraction interaction = (IMSInteraction) connection.createInteraction();
   IMSInteractionSpec ixnSpec = new IMSInteractionSpec();
   ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE);

//Create new input record 
   input = new PhoneBookInputRecordField("cp037");
   			input.setIn__ll((short)59);
   input.setIn__zz((short) 0);
   input.setIn__trcd("IVTNO");
   input.setTranCodeLength(10);
   input.setIn__command("DISPLAY");
   input.setIn__name1("LAST3");
   			input.setIn__name2("");
   input.setAllFieldsGiven(false);
   PhoneBookOutputRecordField

//Create new output record 
   output = new PhoneBookOutputRecordField("cp037");

//Execute interaction
   interaction.execute(ixnSpec, input, output);

//Display output
   System.out.println ("Output is: ");
   System.out.println("\nMessage: "
      + output.getOut__mesg()
      + "\nName:"
      + output.getOut__name1()
      + " "
      + output.getOut__name2()
      + "\nExtension: "
      + output.getOut__extn()
      + "\nZipcode: "
      + output.getOut__zip());

     } catch (Exception e) {
               e.printStackTrace();
			} finally {
//Close both the interaction and the connection
   				interaction.close();
   connection.close();
}
}

反馈