要通过 IMS TM 资源适配器来访问 IMS 事务,可以亲自编写应用程序的源代码,而不使用由开发环境生成的应用程序代码。这与使用开发环境(例如,Rational® Application Developer)生成应用程序以便消除不必要编码的过程有所不同。
为了亲自编写代码,您的应用程序必须使用公共客户机接口(CCI)编程接口。您可以通过 CCI API 从企业 bean、JavaServer 页(JSP)技术和 servlet 等 J2EE 客户机访问 IMS 等后端企业信息系统(EIS)。
随后可以从该 IMSConnectionFactory 对象创建 IMSConnection 对象。可以在 IMSConnectionSpec 对象(作为参数传递至 getConnection 方法)中指定 IMSConnection 对象的属性,或使用在 IMSConnectionFactory 中定义的缺省值。在获取了 IMSConnection 之后,可以从该 IMSConnection 创建 IMSInteraction。IMSInteraction 表示即将在该连接上执行的交互。对于 Connection 对象,交互可以从 IMSInteractionSpec 类接受定制对象。
为了执行交互,应用程序将调用 IMSInteraction 对象的 execute() 方法,向其传递输入和输出对象以保存数据。创建的输入字节数组必须包含发送至 IMS 的输入消息中每个字段的值。类似,还必须创建输出字节数组以保存 IMS 所返回的响应消息。输出消息中每个字段的值是从输出字节数组中抽取的。
可以亲自编写输入和输出字节数组,即使不打算将 RAD 用于应用程序开发,也可以使用 Rational Application Developer(RAD)中的 J2C 选项为 CCI 应用程序的输入和输出消息创建 Java™ 数据绑定。
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(); } }