Створення Java-обробника Axis2 для конвеєра клієнтів Web-сервісів CICS
- Інфраструктура Web-сервісів Axis2
- Лістинг 1. Приклад конфігураційного файлу для конвеєра клієнтів Web-сервісів Axis2 Java.
- Створення Java-обробника Axis2
- Налаштування IDE
- Створення обробника з використанням наданого прикладу коду
- LogHandler.java
- CustomHeaderHandler.java
- Призначений для користувача заголовок, згенерований оброблювачем
- Експорт JAR-файлу
- Налаштування Axis2 в CICS
- Створення користувальницького сховища
- Команда копіювання вмісту сховища
- Каталог Axis2
- Вказівка шляху до нового сховища
- Включення Java-обробника в шлях до класів Axis2 JVM
- Додавання JAR-файлу в змінну середовища JVM
- Виклик для користувача обробника в конвеєрі
- Синтаксис визначення нового етапу
- Приклад конфігурації етапу OutFlow в axis2.xml
- висновок
- Подяки
- Ресурси для скачування
У статті передбачається, що у вас вже є встановлена CICS, яка буде виступати в якості ініціатора запитів сервісів з використанням конвеєра Java. Нижче наведено список необхідних ресурсів. Детальна інформація по установці CICS як ініціатора запитів сервісів приведена в інформаційному центрі по CICS TS V4.2, див. Посилання: Creating the web services infrastructure .
Інфраструктура Web-сервісів Axis2
Після установки інфраструктури Web-сервісів CICS у вас повинні бути в наявності наступні ресурси:
- Сервер Axis2 JVM - виконує інфраструктуру Axis2 в CICS. Для його використання необхідно мати:
- JVMSERVER- визначення в CICS CSD, яке вказує на профіль сервера JVM.
- Профіль сервера JVM для Web-сервісу Axis2.
- Конвеєр клієнтів Axis2 - дозволяє використовувати CICS-програму в якості ініціатора запитів сервісів з використанням інфраструктури Axis2. Для його використання необхідно мати в CICS CSD визначення PIPELINE, яке вказує на наступні ресурси:
- Конфігураційний файл - XML-файл, що описує обробку Web-сервісів конвеєром. У лістингу 1 показаний приклад конфігураційного файлу для конвеєра клієнтів Web-сервісів Axis2 Java.
- Каталог WS (каталог викладки) - використовується для автоматичного розгортання Web-сервісів, згенерованих за допомогою утиліт CICS Assistant.
- Каталог Shelf - заповнювач для Web-сервісів, встановлених в CICS.
- (Необов'язково) Ініціатор запитів сервісів CICS, який використовується для тестування.
Лістинг 1. Приклад конфігураційного файлу для конвеєра клієнтів Web-сервісів Axis2 Java.
<? Xml version = "1.0" encoding = "EBCDIC-CP-US"?> <Requester_pipeline xmlns = "http://www.ibm.com/software/htp/cics/pipeline"> <service> <service_handler_list> < cics_soap_1.1_handler_java> <jvmserver> DFHJVMAX </ jvmserver> </cics_soap_1.1_handler_java> </ service_handler_list> </ service> </ requester_pipeline>
Створення Java-обробника Axis2
В цьому розділі демонструється створення простого Java-обробника Axis2 за допомогою Rational Developer for System z . При бажанні можна використовувати будь-яку іншу IDE.
Налаштування IDE
Створіть новий Java-проект:
- У правому нижньому кутку виберіть File => New => Project.
- Для типу проекту (Project Type) виберіть Java project і натисніть Next.
- Вкажіть ім'я проекту (Project Name), наприклад CustomAxis2Handler.
Тепер додайте в шлях збірки Java проекту необхідну бібліотеку.
- У поданні Project Explorer клацніть правою кнопкою миші на імені щойно створеного проекту і виберіть Properties.
- Виберіть Java Build Path.
- Додайте необхідні JAR-файли. Обов'язково потрібно додати:
- axis2-kernel.jar- містить основні класи Axis2.
- axiom-api.jar- містить основні класи Axiom Axis2.
- commons-logging.jar- необхідний для розробки прикладу коду.
- Переконайтеся, що версія Java сумісна з версією CICS. Для CICS TS V4.2 використовуйте Java 1.6. Для CICS TS V5.1 використовуйте Java 1.7.
Тепер IDE налаштована, і можна приступати до створення обробника Axis2 Java.
Створення обробника з використанням наданого прикладу коду
В цьому розділі демонструється написання двох простих обробників: LogHandler і CustomHeaderHandler. Перший обробник використовується для журналирования вмісту SOAP-пакета, а другий - для додавання користувацького заголовка в SOAP-пакет.
- Створіть новий Java-клас LogHandler в пакеті (наприклад, в com.ibm.it.gcre.handler).
- Цей клас повинен розширювати AbstractHandler і реалізовувати Handler.
- Реалізуйте необхідний метод InvocationResponse.
LogHandler.java
package com.ibm.it.gcre.handler; import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; import org.apache.axis2.engine.Handler; import org.apache.axis2.handlers.AbstractHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class LogHandler extends AbstractHandler implements Handler {private static final Log log = LogFactory.getLog (LogHandler.class); private String name; public InvocationResponse invoke (MessageContext msgContext) throws AxisFault {log.info (msgContext.getEnvelope (). toString ()); return InvocationResponse.CONTINUE; } Public void revoke (MessageContext msgContext) {} public String getName () {return name; } Public void setName (String name) {this.name = name; }}
- Повторіть кроки 1 і 2 для Java-класу CustomHeaderHandler.
CustomHeaderHandler.java
package com.ibm.it.gcre.handler; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMNamespace; import org.apache.axiom.soap.SOAPEnvelope; import org.apache.axiom.soap.SOAPFactory; import org.apache.axiom.soap.SOAPHeader; import org.apache.axiom.soap.SOAPHeaderBlock; import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; import org.apache.axis2.engine.Handler; import org.apache.axis2.handlers.AbstractHandler; public class CustomHeaderHandler extends AbstractHandler implements Handler {private String name; private SOAPEnvelope envelope; private SOAPFactory factory; private OMNamespace namespace; private SOAPHeader header; private SOAPHeaderBlock headerBlock; private OMElement headerTag; private String headerTagValue; public InvocationResponse invoke (MessageContext msgContext) throws AxisFault {envelope = msgContext.getEnvelope (); factory = (SOAPFactory) envelope.getOMFactory (); namespace = factory.createOMNamespace ( "http://my.company.org/my.custom.namespace.xsd", "custns"); header = factory.createSOAPHeader (envelope); headerBlock = header.addHeaderBlock ( "HeaderBlockName", namespace); headerTag = factory.createOMElement ( "HeaderTagName", namespace); headerTagValue = "This is the value of the header tag"; headerTag.addChild (factory.createOMText (headerTagValue)); headerBlock.addChild (headerTag); return InvocationResponse.CONTINUE; } Public void revoke (MessageContext msgContext) {} public String getName () {return name; } Public void setName (String name) {this.name = name; }}
Код прикладу згенерує наступну структуру заголовка в SOAP-пакеті:
Призначений для користувача заголовок, згенерований оброблювачем
<SOAP-ENV: Header> ... <custns: HeaderBlockName xmlns: custns = "http://my.company.org/my.custom.namespace.xsd"> <custns: HeaderTagName> Значення тега header </ custns: HeaderTagName> </ custns: HeaderBlockName> ... </ SOAP-ENV: Header>
На цьому створення Java-обробника закінчено. Додаткова інформація по створенню Java-обробника Axis2 приведена в документації по Apache Axis2 / Java .
Експорт JAR-файлу
Тепер можна експортувати артефакти в віддалену систему (наприклад, в каталог / myDir /, використовуючи ім'я /MyHandler.jar.
- При використанні Rational Developer for System z клацніть правою кнопкою миші на імені проекту, а потім виберіть Export, Remote JAR file і каталог, в який хочете помістити JAR-файл.
- При використанні іншої IDE необхідно експортувати JAR-файл і передати його по FTP (в двійковому режимі) на хост-систему.
Налаштування Axis2 в CICS
У цьому розділі описується інфраструктура Axis2 і демонструється настройка CICS на використання призначеного для користувача Java-обробника Axis2.
Apache Axis2 - це механізм Web-сервісів, SOAP і WSDL, який зберігає всі свої конфігураційні файли, сервіси та модулі в репозиторії. У середовищі z / OS ™ CICS надає репозиторій за замовчуванням в каталозі usshome / lib / pipeline / repository. В UNIX ™ параметр ініціалізації системи USSHOME має значення usshome.
Основним конфігураційним файлом є axis2.xml, який визначає, як додаток обробляє вхідні та вихідні повідомлення. У цьому файлі визначаються обробники Message Receiver, Transport Receiver і Transport Sender. У ньому також визначається порядок етапів і задаються обробники, які повинні виконуватися на кожному етапі. Цей файл є точкою розширення для настройки Axis2 на використання вашого обробника.
Створення користувальницького сховища
Включіть в конфігураційний файл axis2.xml посилання на новий обробник. Перед налаштуванням цього файлу створіть каталог для нового сховища Axis2. Наприклад, створіть каталог / etc / cicsts / axis2 / pipeline / repository / і скопіюйте в нього вміст каталогу за замовчуванням за допомогою наступної команди:
Команда копіювання вмісту сховища
cp -R /usr/lpp/cicsts/cicsts.v4r2/lib/pipeline/repository/* / etc / cicsts / axis2 / pipeline / repository /
Ця команда створює наступну структуру каталогів:
Каталог Axis2
Вказівка шляху до нового сховища
Тепер потрібно вказати конвеєру CICS Java шлях до нової структури конфігурації, вставивши в конфігураційний файл конвеєра CICS наступний XML-код:
Вказівка шляху до нового сховища
<? Xml version = "1.0" encoding = "EBCDIC-CP-US"?> <Requester_pipeline xmlns = "http://www.ibm.com/software/htp/cics/pipeline"> <service> <service_handler_list> < cics_soap_1.1_handler_java> <jvmserver> DFHJVMAX </ jvmserver> <repository> / etc / cicsts / axis2 / pipeline / repository / </ repository> </cics_soap_1.1_handler_java> </ service_handler_list> </ service> </ requester_pipeline>
Включення Java-обробника в шлях до класів Axis2 JVM
Щоб сервер Axis2 JVM міг виконати створений вами Java-обробник, необхідно вставити JAR-файл в classpath JVM. Для цього додайте ваш JAR-файл в профіль Axis2 JVM, використовуючи опцію CLASSPATH_PREFIX. Тут / myDir- це каталог, в який ви завантажили JAR-файл:
Додавання JAR-файлу в змінну середовища JVM
CLASSPATH_PREFIX = / myDir / MyHandler.jar
Виклик для користувача обробника в конвеєрі
У цьому розділі описується конвеєр для обробників Axis2 і розповідається, як змінити конфігураційний файл axis2.xml, щоб інфраструктура використовувала створений обробник.
У Axis2 передбачені чотири послідовності етапів проходження SOAP-повідомлення через інфраструктуру Axis2:
- InFlow - входять SOAP-повідомлення.
- OutFlow - вихідні SOAP-повідомлення.
- InFaultFlow - входять SOAP-повідомлення з помилками.
- OutFaultFlow - вихідні SOAP-повідомлення з помилками.
Кожна послідовність може складатися з різних етапів, що виконують усі необхідні функції для забезпечення взаємодії Web-сервісів, починаючи з обробки транспорту і закінчуючи перетворенням типів XML / Java. Для вставки обробника використовується точка розширення, що визначає в послідовності новий етап для виклику створеного розробника (див. Нижче).
Синтаксис визначення нового етапу
<Phase name = "SymbolicPhaseName"> <handler name = "SymbolicHandlerName" class = "your.package.your.class" /> </ phase>
Описану вище конфігурацію необхідно помістити в послідовність етапів. Зверніть увагу на позиції оголошення етапів, оскільки вони виконуються послідовно. Наприклад, для реєстрації точного вмісту відправленого пакета етап Logger для SOAP-повідомлень повинен слідувати відразу після етапу Dispatch. Точно так же користувальницький заголовок слід додавати після стандартного конвеєра. Приклад конфігурації Axis2:
Приклад конфігурації етапу OutFlow в axis2.xml
<PhaseOrder type = "OutFlow"> <phase name = "soapmonitorPhase" /> <phase name = "OperationOutPhase" /> <phase name = "CustomHeaderPhase"> <handler name = "CustomHeaderHandler" class = "com.ibm.it. gcre.handler.CustomHeaderHandler "/> </ phase> <phase name =" LoggingPhase "> <handler name =" LogHandler "class =" com.ibm.it.gcre.handler.LogHandler "/> </ phase> <phase name = "RMPhase" /> <phase name = "PolicyDetermination" /> <phase name = "MessageOut" /> <phase name = "CICSHandlerPhase" /> <phase name = "Security"> </ phase> </ phaseOrder>
висновок
У статті демонструється створення Java ™ -обработчіка Axis2 для використання в конвеєрі клієнтів Web-сервісів CICS і наводиться приклад коду для двох обробників.
Подяки
Автор дякує Томмі Юргенс (Tommy Joergensen), технічного фахівця по роботі з клієнтами IBM з Люнгбю, Данія, за рецензування статті.
Ресурси для скачування
Схожі теми
- Ресурси по продукту:
- Оригінал статті: Developing an Axis2 Java handler for the CICS web service client pipeline
- Документація по Apache Axis2 / Java
Документація від Apache Software Foundation. - IBM Rational Developer for System z
Описи продуктів, новини, інструкції, інформація служби підтримки та багато іншого. - Інформаційний центр CICS Transaction Server
Інформаційні центри CICS Transaction Server for z / OS версій V3 і V4. - Створення інфраструктури Web-сервісів
Тема інформаційного центру CICS Transaction Server V4.2. - Сторінка сімейства продуктів CICS
Описи продуктів, новини, інструкції, інформація служби підтримки та багато іншого. - CICS-сервіси
IBM надає корпоративним замовникам повний спектр послуг для планування, розробки, впровадження, захисту, модернізації та обслуговування CICS-рішень. Послуги IBM CICS Services допомагають знизити витрати, окупити інвестиції в CICS і збільшити конкурентні переваги. - Документи CICS Redbook
Документи IBM Redbook охоплюють широкий діапазон тем (від простих для початківців до складних для фахівців), пов'язаних з CICS.
- Ресурси по WebSphere:
- developerWorks WebSphere
Технічна інформація і ресурси для розробників, які використовують продукти WebSphere. На сайті developerWorks WebSphere розміщені файли для завантаження, інструкції, допоміжні ресурси і безкоштовна технічна бібліотека, яка містить понад 2000 технічних статей, навчальні посібники, передові методики, матеріали IBM Redbook і керівництва по продуктах. - Найпопулярніші ознайомчі версії продуктів WebSphere
Безкоштовні ознайомчі версії основних продуктів WebSphere. - WebSphere forums
Спеціалізовані форуми, на яких ви можете отримати відповіді на технічні питання і поділитися своїми знаннями з іншими користувачами WebSphere. - Демонстраційні матеріали по WebSphere
Завантажте та перегляньте ці демонстраційні матеріали і дізнайтеся, як продукти і технології WebSphere можуть допомогти вашій компанії отримати переваги в бізнесі. - Статті, присвячені WebSphere, на developerWorks
Більше 3000 відредагованих і класифікованих статей по WebSphere і пов'язаним технологіям, написаних провідними практиками і консультантами з IBM і сторонніх організацій. Знайдіть те, що вам потрібно. - Книги видавництва IBM Press з WebSphere
Зручний онлайн-замовлення книг в Barnes & Noble. - Події, пов'язані з WebSphere
Конференції, галузеві виставки, Web-трансляції та інші міжнародні події, які можуть зацікавити розробників, які використовують WebSphere.
- developerWorks WebSphere
- Ресурси на developerWorks
- Безкоштовні ознайомчі версії продуктів IBM для завантаження
Безкоштовні ознайомчі продукти IBM® DB2®, Lotus®, Rational®, Tivoli® і WebSphere® для завантаження. - Ресурси для розробників систем управління бізнес-процесами на developerWorks
BPM - статті з інструкціями, файли для завантаження, керівництва, навчальні матеріали, інформація про продукти та інші ресурси, що допомагають в моделюванні, компонуванні, розгортанні та підтримки бізнес-процесів. - Блоги на developerWorks
Спілкуйтеся з відвідувачами і авторами developerWorks, а також з редакторами та розробниками IBM. - Технічні брифінги на developerWorks
Безкоштовні інтерактивні сесії з експертами IBM для прискорення навчання і допомоги в успішній реалізації програмних проектів. Тривалість інтерактивних сесій, що проводяться в різних містах по всьому світу, становить від однієї години до повного робочого дня. - подкасти developerWorks
Слухайте інтерв'ю та дискусії з фахівцями в галузі програмного забезпечення. - Слідкуйте за developerWorks в Твіттері
Останні повідомлення і посилання в Твіттері. - IBM Education Assistant
Набір мультимедійних навчальних матеріалів, які допоможуть краще зрозуміти програмні продукти IBM і ефективніше використовувати їх для вирішення завдань вашого бізнесу.
- Безкоштовні ознайомчі версії продуктів IBM для завантаження
Підпишіть мене на повідомлення до коментарів
Lt;?Encoding = "EBCDIC-CP-US"?
Encoding = "EBCDIC-CP-US"?