Лехо Нигул
Введение
IBM Rational Application Developer V7.0 предлагает значительное улучшение для работы пользователей с различными инструментами разработки приложений, включая Java 2 Platform, Enterprise Edition (J2EE) Connector (J2C). В данной статье описаны некоторые из улучшений и показано, как, например, разработчик J2EE, может использовать Rational Application Developer V7.0 для создания J2C bean-компонента, обеспечивающего доступ к функциям основной системы IBM IMS (система управления информацией).
В современном мире бизнес-приложений, управляемых сервисами, очень важно обеспечить простой доступ к функции корпоративной информационной системы (EIS) (обеспечивается с помощью J2C bean-компонента) различным компонентам сложной бизнес-экосистемы. В данной статье показано, как реализовать такой доступ с сервисным управлением к функциям EIS, а также как создать Web-сервис, обеспечивающий доступ к IMS с помощью J2C bean-компонента.
Необходимая настройка
Для выполения упражнений данного руководства необходимо установить следующие программы:
- Rational Application Developer V7.0 с J2C tools и IBM WebSphere Application Server V6.1 на компьютере разработчика;
- Транзакция PhoneBook IMS (IVTNO), представляющая собой одну из программ проверки установки (Installation Verification), входящей в комплект IMS;
- Пример программы на COBOL, сохраненной в файловой системе.
Описание сценария
В данном учебном руководстве предполагается следующий сценарий: должна быть установлена программа Phonebook, выполняющаяся под управлением IMS. Изучение функции данной программы выполняется с помощью Web-сервиса. Но, в соответствии с требованиями, входными параметрами для приложения должны быть не только входные данные, необходимые для работы серверной системы, но и свойство взаимодействия interaction property executionTimeout
IMS.
В данном руководстве показано, как можно реализовать данный сценарий:
- Создание классов привязки данных, соответствующих структурам входных и выходных данных COBOL;
- Создание скелета J2C bean-компонента, обеспечивающего доступ к IMS;
- Создание метода J2C bean-компонента, ответственного за вызов PhoneBook на серверной системе IMS;
- Создание Web-сервиса для анализа функций, предоставляемых созданным J2C bean-компонентом;
- Тестирование созданного Web-сервиса с помощью обозревателя Web-сервисов.
Упражнение 1: Создание классов привязки данных, соответствующих структурам входных и выходных данных COBOL
Классы привязки данных представляют собой один из ключевых артефактов, необходимых для доступа к функциям системы EIS. В этом случае система IMS должна быть установлена на сервере, на котором выполняется приложение PhoneBook. Данное приложение ожидает ввод определенных данных и создает некоторые выходные данные. Проблема заключается в том, что для приложения PhoneBook ожидается, что структуры данных будут определены на языке COBOL.
J2C bean-компонент действует во вселенной Java и ожидается, что все данные будут определены в виде Java-классов. Поэтому необходимо создать Java-представление структур данных COBOL, которое можно использовать для доступа к функциям IMS-приложения. В данном руководстве будут создана классы привязки данных, необходимые для запуска приложения PhoneBook в системе IMS.
Для этого необходимо выполнить следующие действия.
- Выберите New > Other > J2C > CICS/IMS Java Data Binding wizard (см. рисунок 1).
Рисунок 1. Запуск мастера привязки данных
На первой странице мастера привязки данных необходимо выбрать язык серверной системы для структуры данных, которые требуется сопоставить с Java.
Доступные сопоставления:
- COBOL to Java, позволяющее создавать Java-представление структуры данных, определенных на COBOL;
- COBOL MPO to Java - подобно COBOL to Java, но позволяет использовать структуру данных COBOL с несколькими возможными выходными данными;
- PLI to Java, позволяющее создавать Java-представление структуры данных, определенных на PL1;
- PLI MPO to Java - подобно PLI to Java, но позволяет использовать структуру данных PL1 с несколькими возможными выводами данных;
- C to Java, позволяющее создавать Java-представление структуры данных, определенных на C.
- В данном сценарии будет использоваться сопоставление COBOL to Java (см. рисунок 2).
Также выберите в файловой системе файл COBOL, прилагаемый к данному учебному руководству, и нажмите Next;
Рисунок 2. Выбор сопоставления в мастере привязки данных
- На следующей странице мастера привязки данных необходимо задать параметры, соответствующие свойствам серверной системы (в данном случае IMS), на которой выполняется программа COBOL. Поскольку компьютер с IMS работает под управлением IBM z/OS, выберите эту ОС в качестве целевой платформы (см. рисунок 3);
Рисунок 3. Задание свойств серверной системы в мастере привязки данных
- После задания параметров серверной системы следует выбрать структуру данных, для которой будет выполнено сопоставление в Java-презентации. Для этого нажмите Query, выберите структуру данных INPUT-MSG и нажмите Next (см. рисунок 4);
Рисунок 4. Выбор структуры данных
- На последней странице мастера привязки данных необходимо задать проект и пакет, в котором требуется создать Java-класс INPUTMSG, представляющий структуру данных INPUT_MSG COBOL в среде Java. В данном примере создадим этот класс в проекте IMSJavaProject (см. рисунок 5).
Рисунок 5. Задание назначения формирования кода
На данном этапе создан Java-класс, представляющий структуру входных данных для программы IMS. Также необходимо создать класс, представляющий структуру выходных данных программы IMS. Для этого повторите предыдущие 5 шагов за исключением того, что OUTPUT-MSG задается как требуемая структура данных COBOL и создается класс OUTPUTMSG в том же проекте и пакете, в котором создан класс INPUTMSG.
После выполнения данных шагов в IMSJavaProject будут созданы два файла, показанные на рисунке 6.
Рисунок 6. Структура Java-проекта IMS
На данном этапе выполнение упражнения 1 завершается. Теперь в рабочем пространстве имеются Java-классы, обеспечивающие Java-представление структур данных, необходимых для работы приложения PhoneBook на серверной системе IMS.
Теперь необходимо создать код, определяющий подключение к IMS. Это показано в упражнении 2.
Упражнение 2: Создание скелета J2C bean-компонента, обеспечивающего доступ к IMS
Одна из наиболее важных задач, которую должен выполнять J2C bean-компонент, заключается в определении способа подключения к серверной системе.
- Откройте мастер J2C Java Bean, представленный на рисунке 7, и посмотрите, какую необходимо предоставить информацию для создания скелета J2C bean-компонента.
Рисунок 7. Новый мастер J2C
На первой странице мастера находится список адаптеров, которые можно использовать для создания J2C bean-компонента. Rational Application Developer V7.0 поставляется с 2 IMS и 2 CICS (для версий 1.0 и 1.5 спецификаций J2C Architecture) адаптерами. В данном учебном руководстве будет использоваться адаптер IMS (для версии 1.5 спецификации J2C), поставляемый с Rational Application Developer V7.0;
- При выборе адаптера IMS (см. рисунок 8) отображается графическое представление сценария, для которого будет создан код.
Мастер J2C создает J2C bean-компонент, имеющий достаточно информации для доступа к IMS с помощью определенного адаптера IMS. Далее созданный J2C bean-компонент можно будет использовать для формирования таких J2EE-артефактов, как сессионные компоненты Session Enterprise JavaBeans (EJB), JavaServer Pages (JSP) и Web-сервисы. Далее в данном учебном руководстве будет создан Web-сервис, использующий созданный J2C bean-компонент;
Рисунок 8. Выбор адаптера IMS
- Если выбранного адаптера ресурсов еще нет в рабочем пространстве, он импортируется в текущее рабочее пространство после нажатия кнопки Next. Во время импорта отображается индикатор хода выполнения, показанный на рисунке 9.
Рисунок 9. Импорт адаптера IMS
На следующей странице мастера можно ввести информацию, используемую для подключения к основной системе EIS с помощью выбранного адаптера ресурсов J2C. Эта информация относится только к серверной системе. Задать информацию о подключении можно тремя способами:
- Предоставление информации об управляемом подключении;
- Предоставление информации об неуправляемом подключении;
- Предоставление объединенной информации.
Чем эти три метода различаются?
- Управляемое подключение означает, что сервер приложений управляет жизненным циклом подключения (3-звенная модель). Управляемое подключение определяется Java Naming and Directory Interface (JNDI) именем фабрики управляемого подключения, определенным изготовителем сервера приложений. Фабрика управляемого подключения зависит от адаптера EIS и содержит все необходимые сведения о подключении. При управляемом подключении предполагается, что адаптер ресурсов установлен непосредственно на сервере и, следовательно, JNDI-имя фабрики управляемого подключения доступно для всех EAR (файлов архивов корпоративных приложений), установленных на сервере приложений;
- Неуправляемое подключение подразумевает двухзвенную модель, в которой приложение обменивается данными непосредственно с EIS и самостоятельно управляет всеми подключениями. Поэтому все данные о подключении в данном случае инкапсулируются в приложении. Для J2C bean-компонента это означает, что информация о подключении определяется в создаваемом J2C bean-компоненте в тегах доклета;
- Объединение этих двух подходов означает, что клиент сначала пытается получить на сервере фабрику управляемого подключения с помощью предоставленного JNDI-имени и, в случае неудачи, использует информацию, определенную для случая неуправляемого подключения.
В передовых методах J2C разработки применяется управляемое подключение, поскольку оно позволяет использовать функции сервера приложений и разрабатывать сложные многозвенные системы. Управляемое подключение также обеспечивает лучшее многократное использование ресурсов, так как определенные на сервере фабрики подключений могут использоваться другими приложениями.
Пакет J2C tools предоставляет удобный способ определения новой (или выбора существующей) фабрики управления подключения на сервере;
- Для этого задайте имя ресурса JNDI для фабрики управляемого подключения, которую требуется создать, и нажмите New (см. рисунки 10 и 11).
Рисунок 10. Создание новой фабрики управляемого подключения
Как указано ранее, управляемое подключение подразумевает, что соответствующий адаптер ресурсов установлен на сервере, работающем в автономном режиме (другими словами, адаптер доступен для всех EAR, установленных на данном сервере). Если адаптер ресурсов не установлен на заданном экземпляре сервера, J2C tools автоматически устанавливает адаптер ресурсов на сервере в процессе создания фабрики управляемого подключения.
Рисунок 11. Выбор экземпляра сервера
После определения экземпляра сервера требуется задать значения для свойств IMS, необходимых для успешного подключения к системе IMS;
- После нажатия кнопки Finish J2C Tools пытается создать на экземпляре сервера заданную фабрику управляемого подключения (см. рисунок 12).
Если выбранный экземпляр WebSphere v6.1 уже запущен, фабрика управляемого подключения создается сразу же. Если сервер не запущен, создание фабрики управляемого подключения откладывается до следующего запуска сервера и повторной публикации его данных о конфигурации. Это значительно облегчает работу в сравнении с предыдущими версиями J2C Tools в Rational Application Developer, когда требовался запуск сервера;
Рисунок 12. Создание фабрики управляемого подключения
- Теперь можно переходить к следующей странице мастера J2C, на которой необходимо задать проект и пакет, в которых будет создаваться код для J2C bean-компонента, а также фактические имена для файлов реализации и интерфейса J2C bean-компонента.
В данном учебном руководстве J2C bean-компонент будет создан в том же проекте, где создавались классы привязки данных. Рекомендуется использовать имена, указанные на рисунке 13, для обеспечения согласования с соглашениями об используемых именах, применяемыми далее в данном руководстве;
Рисунок 13. Java-свойства J2C bean-компонента
- Нажмите кнопку Finish, мастер J2C создает код подключения к IMS. Рассмотрим, как данная информация представлена в созданном J2C bean-компоненте. Если открыть созданный J2C bean-компонент, то можно заметить, что JNDI-имя фабрики управляемого подключения задано в коде в теге доклета;
Рисунок 14. JNDI-имя в теге доклета
Изображение большего размера
- Прокрутите станицу далее и увидите, что конструктор аннотаций доклета использует информацию, заданную в теге доклета, для создания фрагмента кода, ответственного за подключение к IMS (см. рисунок 15);
Рисунок 15. JNDI-имя в созданном коде
Изображение большего размера
- Теперь запустите экземпляр сервера WebSphere v6.1, определенный при создании фабрики управляемого подключения, и откройте для этого сервера консоль администирования. В ней отображается правильно определенная фабрика управляемого подключения.
Рисунок 16. JNDI-имя в консоли администирования сервера
Изображение большего размера
На данном этапе создан J2C bean-компонент, обеспечивающий подключение к IMS, и классы привязки данных, представляющие данные, необходимые для запуска приложения PhoneBook IMS. В следующем упражнении будет показано, как можно определить Java-метод в J2C bean-компоненте, отвечающем за вызов приложения PhoneBook в IMS.
Упражнение 3: Создание метода J2C bean-компонента, ответственного за вызов PhoneBook на серверной системе IMS
- Для добавления нового метода в J2C bean-компонент откройте Java-класс реализации J2C bean-компонента, нажмите правую кнопку мыши в любом месте исходного кода Java-класса и выберите Source > Add Method to J2C bean (см. рисунок 17).
Другой способ заключается в добавлении J2C-метода с помощью соответствующего фрагмента кода J2C в панели Snippets;
Рисунок 17. Добавление нового J2C-метода из контекстного меню
- В открывшемся диалоговом окне New Java Method нажмите Add для добавления нового метода (см. рисунок 18);
Рисунок 18. Диалоговое окно New J2C method
- Необходимо задать множество параметров для определения Java-метода, соответствующего работе на сервере системы EIS. Во-первых, необходимо задать имя метода (см. рисунок 19);
Рисунок 19. Имя нового J2C-метода
- Во-вторых, необходимо задать входной и выходной типы для метода. Эти типы представляют собой типы привязки данных. созданных в упражнении 1. Поэтому необходимо просто нажать кнопку Browse и выбрать эти классы (см. рисунок 20);
Рисунок 20. Обзор входных и выходных типов для нового J2C java-метода
- После задания входного и выходного типов нажмите кнопку Next;
- На этой странице мастера можно задать свойства взаимодействия и спецификации подключения, связанные с выполнением системы EIS, функции которой требуется использовать в качестве входных аргументов бизнес-методов в J2C bean-компоненте. В данном руководстве выберите свойство спецификации взаимодействия
executionTimeout
(см. рисунок 21).
Рисунок 21. Новый метод
При выборе соответствующего свойства можно просмотреть изменение в сигнатуре метода в верхней части страницы. Возможность задания данной информации с помощью пользовательского интерфейса представляет собой одно из многих усовершенствований инструментальных средств J2C пакета Rational Application Developer V7.0 в сравнении с предыдущими версиями.
Обратите внимание, что поле интерфейса, соответствующее свойству executionTimeout
, недоступно в диалоговом окне New Java Method. Это обусловлено тем, что жестко закодированное значение для данного свойства взаимодействия в данный момент предоставить невозможно, поскольку значение предоставляется аргументом метода Java;
- В данном учебном руководстве определим только один бизнес-метод для J2C bean-компонента. Поэтому нажмите кнопку Finish в диалоговом окне New Java Method;
Рисунок 22. Новый метод
- Если теперь открыть файл реализации J2C bean-компонента, то можно просмотреть новый метод (см. рисунок 23). Обратите внимание, что сигнатура сообщения аналогична сигнатуре, выделенной в диалоговом окне New Method.
Рисунок 23. Новый метод
Изображение большего размера
На данном этапе создан функциональный J2C bean-компонент, обеспечивающий доступ к IMS и извлекающий записи PhoneBook.
В следующем упражнении показано, как использовать эту функции с помощью Web-сервиса.
Упражнение 4: Создание Web-сервиса для анализа функций, предоставляемых созданным J2C bean-компонентом
Перед выполнением данного упражнения запустите сервер WebSphere v6.1, если он еще не запущен.
J2C Tools предоставляют простой способ создания таких развертываемых артефактов, как Web-сервисы, JSP и сессионные bean-компоненты, которые можно использовать для тестирования работы J2C bean-компонента. В данном учебном руководстве создадим Web-сервис, выполняющий доступ к приложению PhoneBook с помощью J2C bean-компонента.
- На странице выбора мастера выберите мастер Web Page, Web Service, or EJB from J2C bean в категории J2C (см. рисунок 24);
Рисунок 24. Открытие мастера развертывания J2C
- На первой странице этого мастера необходимо определить, какой J2C bean-компонент будет создавать развертываемые артефакты (см. рисунок 25);
Рисунок 25. Выбор J2C bean-компонента для создания артефактов развертывания
- На следующей странице задайте создание Web-сервиса (см. рисунок 26);
Рисунок 26. Выбор создания Web-сервиса
На следующей странице необходимо задать (или создать новый) динамический Web-проект, где будет создан Web-сервис.
Для доступа к ресурсам, определенным на сервере, рекомендуется использовать ссылки на ресурсы. Ссылки на ресурсы позволяют убедиться, что фактическое JNDI-имя не закодировано жестко. Ссылка на ресурс определяется в дескрипторе размещения приложения, ее можно изменить для указания на другой «реальный» ресурс в зависимости от того, на каком сервере планируется развернуть приложение. Если на этой странице мастера задать имя ссылки на ресурс, J2C tools создает ссылку на ресурс и автоматически обновляет дескриптор приложения.
- Нажмите кнопку Finish , создается Web-сервис с настройками по умолчанию (см. рисунок 27).
Примечание: Если требуется создать Web-сервис с другими настройками, используйте мастер Web-сервисов из пакета Web Service Tools для создания Web-сервиса восходящего типа (Web-сервис из Java Bean) с помощью данного набора инструментов;
Рисунок 27. Создание Web-сервиса
- Посмотрите на содержимое Web-проекта: можно заметить, что созданы артефакты Web-сервиса (см. рисунок 28).
Рисунок 28. Артефакты Web-сервиса в Web-проекте
В упражнении 5 показано, как протестировать созданный Web-сервис.
Упражнение 5: Тестирование созданного Web-сервиса с помощью обозревателя Web-сервисов
Теперь можно протестировать созданный Web-сервис на сервере WebSphere 6.1 с помощью обозревателя Web-сервисов.
- Во-первых, необходимо развернуть EAR, содержащий Web-проект для WebSphere 6.1 Server (см. рисунок 29);
Рисунок 29. Добавление EAR на сервер
- Нажмите правой кнопкой мыши файл wsdl, соответствующий созданному Web-сервису, и выберите Web Services > Test with Web Services Explorer (см. рисунок 30);
Рисунок 30. Тестирование с помощью обозревателя Web-сервисов
- В обозревателе Web-сервисов задайте выполнение метода
runPhoneBook
(см. рисунок 31);
Рисунок 31. Тестирование метода runPhoneBook
Изображение большего размера
- Далее предоставьте этому методу входные данные (см. рисунок 32).
Примечание: задайте 1000 миллисекунд в качестве значения для свойства executionTimeout
. Этого более чем достаточно для выполнения операции приложения PhoneBook;
Рисунок 32. Задание соответствующих параметров для вызова метода
- Отклик должен быть похож на представленный на рисунке 33.
Рисунок 33. Новый метод
Это доказывает, что программа работает правильно, и что получены верные данные из приложения PhoneBook на IMS.
Также можно убедиться в том, что значение свойства myExecutionTimeout
, заданное во входных данных, фактически используется серверной системой;
- Для этого задайте значение
myExecutionTimeout
как 1
. Скорее всего, требуется более 1 миллисекунды для выполнения транзакции, поэтому будет получено исключение. Теперь снова запустите обозреватель Web-сервисов, экран должен походить на представленный на рисунке 34 (фрейм результатов). Это означает, что произошло исключение;
Рисунок 34. Новый метод
- Если выбрать просмотр исходного кода, то можно увидеть исключение, подобное показанному в листинге 1 в разделе отклика. Данное исключение указывает, что система не способна завершить выполнение в течение 1 миллисекунды.
Листинг 1. Исключение
javax.resource.spi.EISSystemException: ICO0081E:
com.ibm.connector2.ims.ico.IMSTCPIPManagedConnection@
1b521b52.processOutputOTMAMsg(byte[],
IMSInteractionSpec, int) error. Execution timeout has occurred for this interaction.
The executionTimeout value specified was [1] milliseconds.
The value used by IMS Connect was [10] milliseconds.
|
Это означает, что имеется полнофункциональный Web-сервис, который не только вызывает функции серверной системы IMS, но и передает значения, соответствующие различным свойствам взаимодействий IMS.
Заключение
В данном учебном руководстве показано, как можно использовать пакет J2C tools, входящий в состав Rational Application Developer V7.0, для быстрого создания J2C bean-компонента, обеспечивающего доступ к функциям серверной системы IMS. Также продемонстрировано, как данную возможность можно использовать для других приложений и бизнес-процессов с помощью механизма Web-сервисов.
Ссылки по теме