Створення Java-обробника Axis2 для конвеєра клієнтів Web-сервісів CICS

  1. Інфраструктура Web-сервісів Axis2
  2. Лістинг 1. Приклад конфігураційного файлу для конвеєра клієнтів Web-сервісів Axis2 Java.
  3. Створення Java-обробника Axis2
  4. Налаштування IDE
  5. Створення обробника з використанням наданого прикладу коду
  6. LogHandler.java
  7. CustomHeaderHandler.java
  8. Призначений для користувача заголовок, згенерований оброблювачем
  9. Експорт JAR-файлу
  10. Налаштування Axis2 в CICS
  11. Створення користувальницького сховища
  12. Команда копіювання вмісту сховища
  13. Каталог Axis2
  14. Вказівка ​​шляху до нового сховища
  15. Включення Java-обробника в шлях до класів Axis2 JVM
  16. Додавання JAR-файлу в змінну середовища JVM
  17. Виклик для користувача обробника в конвеєрі
  18. Синтаксис визначення нового етапу
  19. Приклад конфігурації етапу OutFlow в axis2.xml
  20. висновок
  21. Подяки
  22. Ресурси для скачування

У статті передбачається, що у вас вже є встановлена ​​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.

&lt;? 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-проект:

  1. У правому нижньому кутку виберіть File => New => Project.
  2. Для типу проекту (Project Type) виберіть Java project і натисніть Next.
  3. Вкажіть ім'я проекту (Project Name), наприклад CustomAxis2Handler.

Тепер додайте в шлях збірки Java проекту необхідну бібліотеку.

  1. У поданні Project Explorer клацніть правою кнопкою миші на імені щойно створеного проекту і виберіть Properties.
  2. Виберіть Java Build Path.
  3. Додайте необхідні JAR-файли. Обов'язково потрібно додати:
    • axis2-kernel.jar- містить основні класи Axis2.
    • axiom-api.jar- містить основні класи Axiom Axis2.
    • commons-logging.jar- необхідний для розробки прикладу коду.
    Ці JAR-файли знаходяться в каталозі установки CICS TS; зазвичай це /usr/lpp/cicsts/cicsts.v4r2/lib/pipeline.
  4. Переконайтеся, що версія Java сумісна з версією CICS. Для CICS TS V4.2 використовуйте Java 1.6. Для CICS TS V5.1 використовуйте Java 1.7.

Тепер IDE налаштована, і можна приступати до створення обробника Axis2 Java.

Створення обробника з використанням наданого прикладу коду

В цьому розділі демонструється написання двох простих обробників: LogHandler і CustomHeaderHandler. Перший обробник використовується для журналирования вмісту SOAP-пакета, а другий - для додавання користувацького заголовка в SOAP-пакет.

  1. Створіть новий Java-клас LogHandler в пакеті (наприклад, в com.ibm.it.gcre.handler).
  2. Цей клас повинен розширювати AbstractHandler і реалізовувати Handler.
  3. Реалізуйте необхідний метод 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. Повторіть кроки 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 Java шлях до нової структури конфігурації, вставивши в конфігураційний файл конвеєра CICS наступний XML-код:

Вказівка ​​шляху до нового сховища

&lt;? 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
    • Безкоштовні ознайомчі версії продуктів IBM для завантаження
      Безкоштовні ознайомчі продукти IBM® DB2®, Lotus®, Rational®, Tivoli® і WebSphere® для завантаження.
    • Ресурси для розробників систем управління бізнес-процесами на developerWorks
      BPM - статті з інструкціями, файли для завантаження, керівництва, навчальні матеріали, інформація про продукти та інші ресурси, що допомагають в моделюванні, компонуванні, розгортанні та підтримки бізнес-процесів.
    • Блоги на developerWorks
      Спілкуйтеся з відвідувачами і авторами developerWorks, а також з редакторами та розробниками IBM.
    • Технічні брифінги на developerWorks
      Безкоштовні інтерактивні сесії з експертами IBM для прискорення навчання і допомоги в успішній реалізації програмних проектів. Тривалість інтерактивних сесій, що проводяться в різних містах по всьому світу, становить від однієї години до повного робочого дня.
    • подкасти developerWorks
      Слухайте інтерв'ю та дискусії з фахівцями в галузі програмного забезпечення.
    • Слідкуйте за developerWorks в Твіттері
      Останні повідомлення і посилання в Твіттері.
    • IBM Education Assistant
      Набір мультимедійних навчальних матеріалів, які допоможуть краще зрозуміти програмні продукти IBM і ефективніше використовувати їх для вирішення завдань вашого бізнесу.

Підпишіть мене на повідомлення до коментарів

Lt;?
Encoding = "EBCDIC-CP-US"?
Encoding = "EBCDIC-CP-US"?