Для доступа к транзакциям IMS через адаптер ресурсов IMS TM исходный текст для приложений можно написать самостоятельно, не пользуясь текстом приложений, создаваемым средой разработки. В этом заключается отличие от использования такой среды разработки, как, например, Rational Application Developer, создающей приложения для пользователей таким образом, что самостоятельно создавать тексты не требуется.
Интерфейс программирования Common Client Interface (CCI) необходим для самостоятельного написания текстов приложений. Интерфейс CCI API обеспечивает доступ клиентов J2EE,например, объектов EJB, технологии JavaServer Pages (JSP)и сервлетов, к базовым информационным системам предприятий (EIS), таким как IMS.
После этого из объекта IMSConnectionFactory можно создать объект соединения IMSConnection. Свойства объекта IMSConnection можно либо указать в объекте IMSConnectionSpec, передаваемом в качестве параметра метода getConnection, либо использовать значения, определенные по умолчанию в фабрике соединений IMSConnectionFactory. После получения IMSConnection, из него можно создать взаимодействие IMSInteraction. IMSInteraction представляет собой взаимодействие, которое будет выполнено в этом соединении. Как и в случае с соединением, взаимодействия могут обладать пользовательскими свойствами, взятыми из класса IMSInteractionSpec.
Для выполнения взаимодействия приложение направляет вызов методу выполнения () объекта IMSInteraction, передавая ему объекты ввода и вывода для хранения данных. Во входном сообщении в IMS должен быть создан входной массив байтов, содержащий значения каждого поля. Аналогичным образом, необходимо создать выходной массив байтов для хранения ответного сообщения, возвращаемого IMS. Значение каждого поля в выходном сообщении извлекается из выходного массива байтов.
Массивы байтов можно либо создать самостоятельно, либо воспользоваться опциями J2C в Rational Application Developer (RAD)и создать связки данных Java для входных и выходных сообщений приложения CCI, даже если вы не планируете использоватьRAD для разработки своего приложения.
public void execute() { try { ConnectionFactory cf = null; if (isManaged) { //Использование поиска JNDI для получения экземпляра ConnectionFactory - допустим, имя JNDI фабрики соединений - MyIMS Context ic = new InitialContext(); cf = (ConnectionFactory) ic.lookup("MyIMS"); } else { //Создание и установка значений ManagedConnectionFactory IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory(); mcf.setDataStoreName("MyDSName"); mcf.setHostName("myHostNm"); mcf.setPortNumber(new Integer(1234)); //Создание фабрики соединений из ManagedConnectionFactory cf = (IMSConnectionFactory) mcf.createConnectionFactory(); } Connection connection = cf.getConnection(); //Создание взаимодействия с IMS для проведения транзакции IVTNO IMSInteraction interaction = (IMSInteraction) connection.createInteraction(); IMSInteractionSpec ixnSpec = new IMSInteractionSpec(); ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE); //Создание новой входной записи 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 //Создание новой выходной записи output = new PhoneBookOutputRecordField("cp037"); //Выполнение взаимодействия interaction.execute(ixnSpec, input, 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 { //Закрытие взаимодействия и соединения interaction.close(); connection.close(); } }