Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Расширение SOA путем интеграции данных в режиме реального времени

Денг Пенг Жоу, инженер-программист, IBM
Денг Пенг Жоу (Deng Peng Zhou) работает инженером-программистом в IBM. Занимается интеграцией данных и Java-технологией.

Описание:  Сервис-ориентированная архитектура (Service-Oriented Architecture - SOA) является популярным методом проектирования корпоративных приложений, поскольку обеспечивает такие преимущества как повторно используемые компоненты и платформо-независимое взаимодействие. При проектировании SOA важнейшим фактором является интеграция данных. Ежедневные транзакции являются источником большого объема традиционных данных, которые должны обрабатываться как часть новых приложений. Если вы в состоянии скомбинировать обе технологии (SOA и интеграцию данных), то у вас есть возможность использовать такие преимущества как повторное использование, улучшенное взаимодействие с другими приложениями, использование Web-сервисов. В данной статье показывается, как это можно сделать с помощью IBM® WebSphere® DataStage. DataStage, флагманский продукт IBM, обеспечивает готовое решение для интеграции данных в режиме реального времени (Real-Time data Integration - RTI), которое может быть реализовано в виде Web-сервиса. Мы будем использовать DataStage для разработки примера RTI-задания (job), публикации его в виде Web-сервиса и активизации Web-сервиса из Java™-клиента.

Дата:  07.06.2008
Уровень сложности:  сложный
Активность:  2742 просмотров
Комментарии:  


Введение в интеграцию данных в режиме реального времени и WebSphere DataStage

RTI, компонент IBM WebSphere DataStage (здесь и далее - DataStage), позволяет создавать стандартные сервисы с совместным доступом, включая Web-сервисы. Эти сервисы, которые представляют функциональность интеграции данных DataStage-заданий, можно активизировать, не разбираясь в деталях логики интеграции данных. Развертывание DataStage-задания в виде сервисов с совместным доступом обеспечивает много преимуществ, в том числе:

  • Предоставление одноточечного стандартного доступа к различным источникам данных, внутренним и внешним.
  • Повторное использование логики DataStage-заданий в режиме реального времени.
  • Более быстрая разработка приложений путем обеспечения унифицированных сервисов для каждого приложения, что существенно уменьшает объем избыточного кода.

На рисунке 1 показана архитектура RTI.


Рисунок 1. Архитектура RTI
Рисунок 1. Архитектура RTI

В данной статье показывается, как развернуть RTI-задания в виде Web-сервисов. Материал разбит на следующие разделы:

  • Введение в топологии RTI-заданий.
  • Пошаговая разработка компонента интеграции данных с использованием DataStage.
  • Публикация компонента интеграции данных в виде Web-сервиса.
  • Разработка Java-клиента для вызова опубликованного Web-сервиса.

Топологии RTI-заданий

RTI-сервер поддерживает три топологии заданий:

  • Топология I. Пакетные задания.
  • Топология II. Пакетные задания с этапом RTI-выхода.
  • Топология III. Полностью RTI-совместимые задания.

Топология I. Пакетные задания

Топология I использует новые или существующие пакетные задания, которые представляются как RTI-сервисы (обратите внимание на то, что данная топология не содержит никаких RTI-этапов, таких как этап RTI-входа или этап RTI-выхода, которые рассматриваются в следующих разделах). RTI-сервис, основанный на пакетном задании, может принять параметры задания как входные аргументы. Такой тип сервиса не возвращает выходных данных. При конфигурировании развертывания можно настроить значения параметров задания. На рисунке 2 приведен пример такой топологии.


Рисунок 2. Пакетное задание
Рисунок 2. Пакетное задание

Топология II. Пакетные задания с этапом RTI-выхода

Единственным отличием от топологии I является наличие в топологии II этапа RTI-выхода. Этап RTI-выхода является точкой выхода из задания; он возвращает одну или более строк клиентскому приложению как ответ сервиса. Этап RTI-выхода поддерживает одну входящую ссылку. Его определение таблицы отображается на выходные аргументы RTI-сервиса. Пример данной топологии приведен на рисунке 3.


Рисунок 3. Пакетные задания с этапом RTI-выхода
Рисунок 3. Пакетные задания с этапом RTI-выхода

Топология III. Полностью RTI-совместимые задания

В топологии III задания используют оба этапа - RTI-вход и RTI-выход. Этап RTI-входа является точкой входа в задание, принимающей одну или более строк при запросе сервиса. Этап RTI-выхода поддерживает одну исходящую ссылку. Его определение таблицы отображается на входные аргументы RTI-сервиса, например, входные аргументы операции Web-сервиса. Задание, выполненное по топологии III, всегда активно. После развертывания этого задания в виде Web-сервиса выполняющийся экземпляр задания находится в DataStage Director. На рисунке 4 приведен пример данной топологии.


Рисунок 4. Полностью RTI-совместимые задания
Рисунок 4. Полностью RTI-совместимые задания

Разработка примера RTI-задания

Давайте создадим пример RTI-задания для извлечения информации о месторасположении из таблицы базы данных. Используем параметр employeeid, структурированный в виде массива, что позволяет передавать несколько значений одновременно. Задание возвращает информацию о месторасположении сотрудников, указанных входным параметром. Это RTI-задание использует таблицу RFIDLOCATION (определение таблицы приведено в таблице 1), которая хранится в базе данных IBM DB2® под названием GBPMDB. Определение таблицы этапа RTI-входа и этапа RTI-выхода показано в таблицах 2 и 3 соответственно. Обратите внимание на то, что все столбцы таблиц 2 и 3 включены в таблицу 1. Поэтому при импортировании определения таблицы с использованием DataStage Designer можно получить определения таблиц 2 и 3 из определения таблицы 1.


Таблица 1. Определение таблицы RFIDLOCATION
Название столбцаКлючТипДлинаМожет ли иметь значение Null
RFIDRecordLocationIDДаInteger10Нет
EmployeeIDНетVarchar60Нет
LocationIDНетInteger10Нет
RecordTimeНетTimestamp26Нет


Таблица 2. Определение таблицы этапа RTI-входа
Название столбцаКлючТипДлинаМожет ли иметь значение Null
EmployeeIDНетVarchar60Нет


Таблица 3. Определение таблицы этапа RTI-выхода LocationInfo
Название столбцаКлючТипДлинаМожет ли иметь значение Null
EmployeeIDНетVarchar60Нет
LocationIDНетInteger10Нет
RecordTimeНетTimestamp26Нет

Импортирование определения таблицы с использованием DataStage Designer

  1. В репозитории DataStage Designer щелкните правой кнопкой мыши на Table Definitions, а затем выберите Import > Plug-in Meta Data Definitions.
  2. Выберите DSDB2 в столбце Name и нажмите кнопку OK.
  3. В следующем окне (см. рисунок 5) выберите имя сервера в ниспадающем списке (в данном случае GBPMDB). Именем сервера является имя созданной вами базы данных, содержащей таблицу, которую нужно импортировать.
  4. Введите имя пользователя db2inst1 и пароль passw0rd, для подключения к серверу.
  5. Отметьте флажок Tables и нажмите кнопку Next.

    Рисунок 5. Выбор базы данных
    Рисунок 5. Выбор базы данных

  6. Теперь выберите таблицу RFIDLOCATION в списке Select Table(s) и нажмите кнопку Import для импортирования определения таблицы RFIDLOCATION.

Вы должны увидеть определения таблицы, которые только что импортировали, в подгатегории DSDB2 репозитория DataStage Designer, как показано на рисунке 6.


Рисунок 6. Определение таблицы
Рисунок 6. Определение таблицы

Создание параллельного задания

  1. Теперь создайте новое параллельное задание в DataStage Designer (схема этого задания показана на рисунке 7). Данное задание содержит один этап DB2/API UDB, один этап RTI-входа, один этап RTI-выхода и один этап соединения (join) - все четыре соединены этапами ссылок.

    Рисунок 7. Схема задания
    Рисунок 7. Схема задания

  2. Сохраните это новое задание как sampleRTI.

Конфигурирование свойств задания

  1. Щелкните левой кнопкой мыши на пиктограмме Job Properties в DataStage Designer, чтобы открыть окно Job Properties (см. рисунок 8).
  2. В закладке General отметьте флажки Allow Multiple Instance и RTI Service Enabled.
  3. Нажмите кнопку OK и сохраните конфигурацию.

    Рисунок 8. Конфигурирование свойств задания
    Рисунок 8. Конфигурирование свойств задания

Конфигурирование этапа DB2/UDB

  1. Выполните двойной щелчок левой кнопкой мыши на этапе DB2/UDB API RFIDLOCATION, чтобы открыть окно, показанное на рисунке 9.

    Рисунок 9. Конфигурирование информации о подключении к базе данных
    Рисунок 9. Конфигурирование информации о подключении к базе данных

  2. В этом окне укажите имя сервера (имя базы данных, к которой хотите подключиться), в данном случае GBPMDB.
  3. Введите ID пользователя db2inst1 и пароль passw0rd. Оставьте остальные параметры в значениях по умолчанию.
  4. Перейдите в закладку Output в верхней части окна.
  5. В закладке General страницы Output (см. рисунок 10) введите RFIDLOCATION в поле Table names и выберите Generated SQL query в ниспадающем списке Query type.
  6. Оставьте остальные настройки в значениях по умолчанию и перейдите в закладку Columns.

    Рисунок 10. Конфигурирование информации о таблице
    Рисунок 10. Конфигурирование информации о таблице

  7. В закладке Columns нажмите кнопку Load для загрузки определения таблицы. Откроется окно, в котором можно выбрать определение таблицы в репозитории.
  8. Выберите RTILOCATION в подкатегории DSDB2 и нажмите кнопку OK.
  9. Теперь выберите столбцы, показанные на рисунке 11, и нажмите кнопку OK.

    Рисунок 11. Выбор столбцов
    Рисунок 11. Выбор столбцов

  10. Вы увидите результаты, показанные на рисунке 12. Нажмите кнопку OK и сохраните задание.

    Рисунок 12. Импорт результатов
    Рисунок 12. Импорт результатов

Конфигурирование этапа RTI-входа Employeeid

  1. Выполните двойной щелчок левой кнопкой мыши на этапе RTI-входа Employeeid и выберите закладку Columns на странице Output.
  2. Отсюда загрузите определение таблицы (загрузка определения таблицы для этапа RTI-входа Employeeid аналогична описанной в разделе "Конфигурирование этапа DB2/UDB").
  3. После загрузки определения таблицы нажмите кнопку OK и сохраните задание.

Конфигурирование этапа RTI-выхода LocationInfo

  1. Выполните двойной щелчок левой кнопкой мыши на этапе RTI-выхода LocationInfo и перейдите в закладку Columns страницы Input.
  2. Загрузите определение таблицы (загрузка определения таблицы для этапа RTI-выхода LocationInfo аналогична описанной в разделе "Конфигурирование этапа DB2/UDB").
  3. После загрузки определения таблицы нажмите кнопку OK и сохраните задание.

Конфигурирование этапа соединения JoinByEmployeeid

  1. Выполните двойной щелчок левой кнопкой мыши на JoinByEmployeeid для его настройки.
  2. Перейдите в закладку Properties страницы Stage, затем выберите EMPLOYEEID в качестве ключа соединения и Inner в качестве типа соединения, как показано на рисунке 13.

    Рисунок 13. Конфигурирование этапа соединения
    Рисунок 13. Конфигурирование этапа соединения

  3. Теперь перейдите в закладку Output. Вы увидите, что DataStage сгенерировал отображающее отношение между источником и назначением. Оставьте значения по умолчанию и нажмите кнопку OK.

Компилирование задания

Щелкните левой кнопкой мыши на пиктограмме Compile в DataStage Designer. Откроется окно Compile Job с сообщением Job successfully compiled, если во время этого процесса не возникло каких-либо ошибок. Задание готово к развертыванию.


Развертывание RTI-задания sampleRTI в виде Web-сервиса

В оставшейся части данной статьи описывается, как развернуть RTI-задание, используя RTI-консоль.

  1. В панели Current Tasks откройте RTI-консоль и нажмите кнопку Register an RTI Server. При этом откроется мастер RTI Server Wizard, как показано на рисунке 14.
  2. В поле RTI Server Name введите имя машины RTI-сервера. Номер порта может быть другим в зависимости от сервера приложений, на котором выполняется ваш RTI-сервер. Например, если сервером приложений является IBM WebSphere Application Server, номер порта равен 9080.
  3. Сохраните значения по умолчанию для остальных полей и нажмите кнопку Finish.

    Рисунок 14. Настройка RTI-сервера
    Рисунок 14. Настройка RTI-сервера

  4. Только что зарегистрированный RTI-сервер отображается в виде пиктограммы в правой панели. Выполните двойной щелчок левой кнопкой мыши на этой пиктограмме.
  5. В панели Current Tasks нажмите кнопку Register a DataStage Machine, чтобы открыть мастер DataStage Machine Registration Wizard (см. рисунок 15).
  6. В поле Machine name введите имя машины, на которой работает сервер DataStage или хост DataStage TX.
  7. Для сервера DataStage введите корректную информацию о полномочиях в полях User и Password. Портом прослушивания по умолчанию для RTI Agent является 2000. Если ваш администратор DataStage изменил этот порт, выполните следующие действия:
    1. Нажмите кнопку User-defined port.
    2. Введите новый номер порта.
    3. Нажмите кнопку Finish.


    Рисунок 15. Настройка сервера DataStage
    Рисунок 15. Настройка сервера DataStage

  8. В панели Current Tasks нажмите Add a New Service to the RTI Server, чтобы открыть мастер RTI Service Wizard.
  9. В поле Service name ведите имя нового сервиса, затем нажмите кнопку Finish.
  10. Только что созданный вами сервис отображается в виде пиктограммы в правой панели. Выполните двойной щелчок левой кнопкой мыши на этой пиктограмме sampleRTI.
  11. В панели Current Tasks нажмите Add Support for Service Bindings, чтобы открыть мастер Add Support for Service Bindings Wizard.
  12. Выберите Soap over HTTP в списке правой панели, затем нажмите кнопку Next.
  13. В поле Additional binding-specific description при желании введите описание связывания, которое добавляется к WSDL (Web Services Description Language).
  14. В списке Style выберите стиль кодирования для SOAP-сообщений. Выбор зависит от того, что принимает клиентское приложение.
  15. Нажмите кнопку Finish. В панели Results появится пиктограмма связывания.
  16. В панели Current Tasks выберите Add an Operation, чтобы открыть мастер New Operation Wizard, как показано на рисунке 16. Вы увидите список зарегистрированных машин DataStage Server и DataStage TX, представленных узлами.
  17. Выберите задание sampleRTI, которое вы только что создали, затем нажмите кнопку Next.

    Рисунок 16. Выбор RTI-задания
    Рисунок 16. Выбор RTI-задания

  18. В поле Operation Name при необходимости измените имя. По умолчанию используется имя задания или отображения.
  19. В поле Queue Size укажите размер очереди операций в виде количества запросов сервисов. Если этот размер превышается, запрос отклоняется. По умолчанию указано три запроса.
  20. В поле Wait delay укажите максимальное время ожидания в миллисекундах. Если это время превышается, запрос отклоняется. Значением по умолчанию является 100 миллисекунд.
  21. Нажмите кнопку Next.
  22. Раскройте список Options и выберите Array (см. рисунок 17). Задания, принимающие или требующие указания нескольких строк в одном запросе, должны иметь входные аргументы, оформленные как массивы. В данном случае мы развертываем задание в виде Web-сервиса, принимающего несколько строк в одном запросе, поэтому вы должны выбрать Array в списке Options.

    Рисунок 17. Создание новой операции
    Рисунок 17. Создание новой операции

  23. RTI-задание возвращает несколько строк в одном запросе, поэтому снова выберите Array в списке Options.
  24. Нажмите кнопку Next.
  25. Должно открыться окно New Operation Wizard - Messages Summary, как показано на рисунке 18. В поле Service Request and Response Messages проверьте входные и выходные аргументы для операции и нажмите кнопку Finish.

    Рисунок 18. Проверка входных и выходных аргументов
    Рисунок 18. Проверка входных и выходных аргументов

Теперь настроим параметры времени исполнения.

  1. В поле Minimum введите минимальное количество экземпляров задания, которые могут выполняться одновременно.
  2. В поле Maximum введите максимальное количество экземпляров задания, которые могут выполняться одновременно. По умолчанию указывается значение 5, максимальное значение - 500.
  3. Оставьте остальные поля в значениях по умолчанию и нажмите кнопку Next.
  4. В следующем окне замените (при необходимости) информацию о полномочиях пользователя по умолчанию, затем нажмите кнопку Finish.
  5. После открытия окна Operation Created нажмите кнопку OK.
  6. Щелкните правой кнопкой мыши на пиктограмме связывания в правой панели и выберите Activate, как показано на рисунке 19.

    Рисунок 19. Активация связывания
    Рисунок 19. Активация связывания

  7. Выполните двойной щелчок левой кнопкой мыши на созданной операции. В правой панели вы найдете задание, присоединенное к операции.
  8. В списке Global Tasks нажмите Browse the RTI Registry для открытия Web-страницы RTI Registry. В списке отображается только что зарегистрированный вами RTI-сервис, sampleRTI (см. рисунок 20).

    Рисунок 20. Список RTI-сервисов
    Рисунок 20. Список RTI-сервисов

  9. Нажмите sampleRTI для отображения информации реестра.
  10. Для отображения WSDL-файла для сервиса в Web-браузере нажмите ссылку WSDL. Через этот WSDL-файл можно активизировать разработанное вами RTI-задание.

Разработка Java-клиента для вызова Web-сервиса

В данном разделе рассказывается, как вызвать разработанный вами Web-сервис, используя Java Client. Нашей основной задачей является разработка Java-клиента. Перед началом работы необходимо подготовить следующую среду:

  • Eclipse IDE Version 3.0 или старше - Eclipse используется для разработки Java-проекта; подготовьте Eclipse IDE, чтобы выполнить действия, описанные в данной статье.
  • JDK 1.4 или 1.5 - JDK необходим для разработки Java-проекта.
  • Apache Axis - Axis используется для генерирования локальной Java-заглушки (stub) для Web-сервиса, что облегчает его активизацию.

Теперь можно приступить к разработке Java-клиента.

  1. Создайте Java-проект и назовите его TestRTIJob.
  2. Щелкните правой кнопкой мыши на проекте и выберите Properties. Откроется окно, изображенное на рисунке 21.
  3. Перейдите в закладку Libraries и добавьте .jar-файлы Axis, показанные на рисунке 21 для данного проекта.

    Рисунок 21. Добавление .jar-файлов
    Рисунок 21. Добавление .jar-файлов

  4. Выберите Run > Run в Eclipse IDE, чтобы открыть окно, показанное на рисунке 22.

    Рисунок 22. Генерирование Java-заглушки
    Рисунок 22. Генерирование Java-заглушки

  5. Создайте экземпляр нового Java-приложения в левой панели этого окна, а затем нажмите кнопку Search справа.
  6. В открывшемся окне Choose Main Type выберите класс WSDL2Java. Этот класс предоставляется Axis для генерирования локальной Java-заглушки для WSDL-файла.
  7. Нажмите кнопку OK.
  8. Скопируйте URL WSDL-файла Web-сервиса, который вы только что опубликовали в поле Program arguments, как показано на рисунке 23.

    Рисунок 23. Копирование URL WSDL-файла
    Рисунок 23. Копирование URL WSDL-файла

  9. Нажмите кнопку Run. После завершения программы вы увидите, что в вашем проекте сгенерированы классы заглушек, как показано на рисунке 24. Эти классы используются для активизации Web-сервиса.

    Рисунок 24. Сгенерированные Java-классы заглушек
    Рисунок 24. Сгенерированные Java-классы заглушек

  10. Теперь необходимо создать класс под названием TestRTIJob для активизации Web-сервиса посредством только что сгенерированных классов заглушек. Исходный код этого класса приведен в листинге 1.

    Листинг 1. Вызов Web-сервиса
                            
    package com.ascential.rti.sample;
    
    import java.rmi.RemoteException;
    
    import javax.xml.rpc.ServiceException;
    
    public class TestRTIJob {
    
    	public static void main(String[] args){
    	    SampleLocator locator = new SampleLocator();
    	    SampleDOCLIT service = null;
    	    try {
    			service = locator.getsampleSoap();
    			String name = service.RTIJob("001");
    			System.out.println("The name is: " + name);
    		} catch (ServiceException e) {
    			e.printStackTrace();
    		} catch (RemoteException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

  11. Выполните этот класс. Java-консоль выводит информацию о месторасположении пользователя.

Готово! Вы завершили весь процесс - от разработки RTI-задания до публикации его как Web-сервиса для активизации из Java-клиента.


Заключение

IBM WebSphere DataStage обеспечивает удобный способ разработки заданий DataStage в виде Web-сервисов. В данной статье вы узнали о RTI и всех его характеристиках, затем разработали пример RTI-задания и опубликовали его в виде Web-сервиса. Затем вы активизировали Web-сервис из Java-клиента. Надеемся, что вы ближе познакомились с DataStage и тем, как он комбинируется с SOA.


Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Об авторе

Денг Пенг Жоу (Deng Peng Zhou) работает инженером-программистом в IBM. Занимается интеграцией данных и Java-технологией.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

(Должно содержать от 3 до 31 символа.)


Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Оценить эту статью

Комментарии

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=SOA и Web-сервисы, Information Management, WebSphere
ArticleID=312427
ArticleTitle=Расширение SOA путем интеграции данных в режиме реального времени
publish-date=06072008
author1-email=zhoudp@cn.ibm.com
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).