Подключение при помощи адаптеров WebSphere Integration Developer: Часть 3. WebSphere Adapter for JDBC

Это третья часть серии статей, в которых исследуется использование адаптеров ресурсов с IBM® WebSphere® Integration Developer. В первой части рассказывалось, что такое адаптеры ресурсов, и как они вписываются в сервис-ориентированную разработку. Во второй мы рассмотрели использование WebSphere Adapter for Flat Files. В данной статье приведен обзор JDBC™ Adapter и показано, как использовать его для реализации простого сценария синхронизации базы данных с IBM WebSphere Integration Developer. Из журнала IBM WebSphere Developer Technical Journal.

Дэвид Ван, инженер-программист, IBM

Дэвид Ван (David Van) в настоящее время работает в отделе удобства использования IBM WebSphere Integration Developer и IBM WebSphere Message Broker Toolkit.



Ричард Грегори, штатный разработчик ПО, IBM

Ричард Грегори (Richard Gregory) - разработчик программного обепечения WebSphere Integration Developer в лаборатории IBM в Торонто. Он отвечал за разработку и выпуск новых версий отладчиков для WebSphere Integration Developer.



Грег Адамс, инженер, IBM

Грег Адамс (Greg Adams) был ведущим архитектором пользовательского интерфейса знаменитой платформы Eclipse, а позднее ведущим архитектором и разработчиком основных инструментов WebSphere Business Integration, в том числе WebSphere Studio Application Developer Integration Edition и WebSphere Integration Developer. Грег возглавил выпуск первых пакетов инструментов IBM, поддерживающих сервис-ориентированную архитектуру (SOA) и первых стандартов BPEL4WS, поддерживающих Business Process Editor. И те, и другие являются важнейшими компонентами поддержки стратегии IBM On Demand



Рэнди Гиффен, консультант по разработке ПО, IBM

Рэнди Гиффен (Randy Giffen) - консультант по разработке программного обеспечения в лаборатории IBM в Оттаве в команде WebSphere Integration Developer. Он отвечал за инструменты машины бизнес-состояний WebSphere Integration Developer и редактор визуальных фрагментов. Ранее работал над пользовательским интерфейсом WebSphere Studio Application Developer Integration Edition, Eclipse и VisualAge для Java.



23.06.2008

Введение

В первой статье данной серии статей "Подключение при помощи адаптеров: Введение в подключение при помощи адаптеров" вы познакомились с основами использования каждого типа адаптера ресурсов с WebSphere Integration Developer, а также с различиями между входящей и исходящей обработкой и с тем, как адаптеры ресурсов вписываются в ваше приложение WebSphere Integration Developer. В данной статье вы познакомитесь с адаптером ресурсов Java Database Connectivity (JDBC™). Мы начнем с обзора адаптера ресурсов JDBC и выполним действия, необходимые для создания приложения, использующего входящие и исходящие возможности JDBC-адаптера.

JDBC предоставляет стандартный способ подключения к любой базе данных, используя язык программирования Java. Без JDBC вы должны были бы написать пользовательский код, специфичный для каждой конкретной базы данных. Для обеспечения унифицированного программного доступа производители баз данных предоставляют JDBC-драйвер. Это удобно для Java-разработчиков, но работая с WebSphere Integration Developer, вы, возможно, не захотите связываться с языком программирования Java. В действительности вам нужно, чтобы база данных работала как сервис-провайдер и/или потребитель, и чтобы можно было интегрировать ее в приложения при помощи компонентов import и export.

Адаптер ресурсов JDBC использует преимущество стандартного доступа к базам данных, предоставляемого JDBC, скрывает от вас все детали работы и позволяет работать с базой данных как с любой другой корпоративной информационной системой (КИС). Как разработчику интеграции вам нужно работать только с компонентами import и export. И, как вы увидели в предыдущих статьях, мастер Enterprise Service Discovery проведет вас через необходимую настройку адаптера ресурсов JDBC.

Давайте сначала взглянем на детали JDBC-адаптера, прежде чем начать работу с ним.


Обзор JDBC-адаптера

WebSphere Adapter for JDBC обеспечивает двунаправленную коммуникацию между приложениями и базами данных. Примерами баз данных являются IBM DB2®, IBM Informix®, Oracle и Microsoft™ SQLServer. JDBC Adapter позволяет интегрировать ваши приложения с любой базой данных, для которой имеется JDBC-драйвер, поддерживающий JDBC 2.0 или старше.

На рисунке 1 показана типичная архитектура адаптера ресурсов JDBC, компонентов базы данных и компонентов WebSphere Process Server.

Рисунок 1. Архитектура JDBC-адаптера
Рисунок 1. Архитектура JDBC-адаптера

EISExport и EISImport реализуются при помощи мастера Enterprise Service Discovery. Вспомните по предыдущим статьям, что компонент export позволяет сервису вызывать модуль, а компонент import позволяет модулю вызывать другие сервисы. Мастер использует адаптер ресурсов JDBC для определения, какие операции доступны как часть базы данных. Эти операции принадлежат каждой таблице в базе данных. Мастер создает также бизнес-объекты, которые будут хранить строковые данные для каждой таблицы. То есть, если таблица в базе данных Customer, например, содержит столбцы CustKey, FName и LName, то бизнес-объект будет содержать атрибуты CustKey, FName и LName. Мастер обнаруживает операции, которые принадлежат входящему сервису (export) и исходящему сервису (import). Как мы покажем, для базы данных к операциям относятся create (создать), update (обновить) и delete (удалить). Через эти оконечные точки вы обмениваетесь также информацией с различными корпоративными информационными системами. На рисунке 2 показаны компоненты EIS export и EIS import, определенные в модуле.

Рисунок 2. Компоненты EIS export и EIS import, определенные в WebSphere Integration Developer
Рисунок 2. Компоненты EIS export и EIS import, определенные в WebSphere Integration Developer

Исходящая обработка

Наверное, вы помните по предыдущим статьям данной серии, что исходящая обработка - это когда модуль делает запросы на передачу или извлечение информации в или из EIS с использованием компонента import. Примером исходящей обработки может служить поиск приложением информации о клиенте в базе данных как часть проверки кредитоспособности или получение приложением новой информации, которую нужно сохранить в базе данных.

Поскольку используется компонент import, модуль обращается к EIS, как делал бы это с любым другим сервисом. Адаптер ресурсов JDBC обрабатывает запросы к EIS из компонента import, в данном случае базы данных.

Когда модулю необходимо получить или записать информацию в базу данных, главная часть рисунка 1, которая нам интересна - это таблицы приложения. Таблицы приложения содержат корпоративную информацию, которую будет использовать или изменять приложение. Обычно приложения, использующие таблицы, управляют, обновляют или синхронизируют информацию, содержащуюся внутри них. То есть, для исходящей обработки при конфигурировании JDBC-адаптера указываются таблицы, к которым вы хотите обратиться из вашего модуля.

Исходящая обработка для JDBC-адаптера поддерживает два стиля бизнес-объектов при передаче или извлечении данных из базы данных: after-image и delta. Бизнес-объект after-image - это полный бизнес-объект после всех выполненных изменений. Например, бизнес-объект может подвергнуться нескольким изменениям во время обработки в приложении. Окончательной версией, которая должна сохраняться в базе данных, является after-image. Операциями, которые используют стиль бизнес-объектов after-image, являются create, update и delete.

delta, с другой стороны, это бизнес-объект, используемый в операции ApplyChanges, содержащей только ключевые значения вместе с измененными данными для данного ключа. Примером может служить изменение приложением адреса клиента. Все, что будет содержать бизнес-объект, - это ID клиента (если это ключ) и новый адрес. Более подробная информация о стилях бизнес-объектов приведена в "Техническом обзоре JDBC-адаптера".

Входящая обработка

Входящая обработка - это когда модуль получает информацию из EIS, используя компонент export. Это происходит, когда в EIS имеются обновления. Адаптер ресурсов JDBC направляет измененную в EIS информацию (в данном случае после операций create, update или delete в базе данных) в компонент export вашего модуля. После этого, на основе измененной информации, модуль может выполнить любой сервис, который он предоставляет.

Наверное, вы помните по предыдущей статье, что адаптер ресурсов для однородных файлов опрашивал каталог событий, чтобы определить, когда добавлялись новые файлы, а затем направлял содержимое в модуль. В случае с адаптером ресурсов JDBC фокус получения изменений базы данных в модуле заключается в использовании триггера. Давайте рассмотрим, как это работает.

Триггер базы данных - это программа, размещенная в базе данных и выполняющаяся при возникновении определенного события в таблице базы данных, например, update. Такой триггер позволяет передавать изменения в базе данных в компонент export модуля WebSphere Integration Developer. На рисунке 3 показан пример триггера базы данных IBM DB2.

Рисунок 3. Пример триггера базы данных IBM DB2
Рисунок 3. Пример триггера базы данных IBM DB2

На человеческом языке триггер базы данных, показанный на рисунке 3, говорит: "Когда в таблице CUSTOMER базы данных создается новая строка, вставить значения в таблицу eventstore". Вставляемыми значениями являются первичный ключ новой строки и название бизнес-объекта, который будет заполняться строковыми данными. Для обработки всех событий таблиц базы данных нужно определить три триггера (а именно CREATE, UPDATE и DELETE) для каждой таблицы, которой интересуется приложение.

Таблица событий сохраняет асинхронные события, сгенерированные триггерами базы данных, в таблице staging. Таблица событий не обязательно должна быть определена в той же базе данных, в которой определены триггеры и таблицы приложения, но она должна быть определена и развернута как часть XA-совместимой (двухфазное подтверждение транзакций) базы данных. Таблица сохраняет события до тех пор, пока они не передадутся в компонент export. После потребления события модулем, содержащим компонент export, таблица событий удаляет это событие. Подробная информация об определении таблицы событий приведена в "Техническом описании JDBC-адаптера".

Для входящей обработки при возникновении манипуляций с данными (create, update или delete) в таблице приложения триггер базы данных перехватывает изменения и вставляет строку в таблицу событий. Адаптер ресурсов JDBC постоянно следит за таблицей событий, опрашивая базу данных, чтобы обнаружить наличие новой строки в таблице событий. Когда новая строка обнаружена, адаптер ресурсов JDBC преобразовывает данные строки в бизнес-граф и вызывает операцию interface компонента EIS export в модуле WebSphere Integration Developer. Так же как и для любого другого адаптера ресурсов, бизнес-граф и interface создаются при помощи мастера Enterprise Service Discovery.


Сценарий синхронизации баз данных

Давайте применим концепции, которые только что изучили, и создадим приложение, использующее JDBC-адаптер. Сценарий синхронизации баз данных является хорошим примером, в котором мы можем применить как входящие, так и исходящие возможности JDBC-адаптера. Довольно часто изменение данных в одной таблице базы данных требует синхронизации с другими типами баз данных, находящимися в других месторасположениях. Например, в компании может иметься база данных, которая зеркально отображает другую базу данных (и обе они должны быть синхронизированы), или две объединяющихся компании нуждаются в синхронизации информации, хранящейся в двух различных типах баз данных.

Для симуляции реального сценария синхронизации баз данных мы создадим две базы данных (ABCFIN и ABCINS), которые должны быть синхронизированы. Они представляют собой таблицы finance и insurance вымышленной компании под названием ABC. Каждая база данных будет содержать значения, показанные в таблице 1.

Таблица 1. Таблица Customer
ИмяТипОписание

Pkey

VARCHAR(10)

Первичный ключ

Fname

VARCHAR(20)

Имя клиента

Lname

VARCHAR(20)

Фамилия клиента

Ccode

VARCHAR(10)

Код клиента

Мы также разработаем логику синхронизации данных, используя компонент interface map, и применим мастер Enterprise Discovery для создания компонентов EIS export и EIS import. Мы определим триггеры базы данных для входящей обработки JDBC-адаптера. На рисунке 4 показан обзор сценария синхронизации баз данных.

Рисунок 4. Сценарий синхронизации баз данных
Рисунок 4. Сценарий синхронизации баз данных

После завершения разработки сценария мы выполним приложение на сервере для синхронизации данных двух баз данных.


Создание сценария

В следующем разделе описаны действия по созданию сценария синхронизации баз данных:

  • Настроить базу данных eventstore.
  • Настроить базу данных приложения (на практике она уже может иметься).
  • Импортировать адаптер ресурсов.
  • Создать компоненты import и export при помощи мастера Enterprise Service Discovery.
  • Реализовать бизнес-логику.

Настройка базы данных

В данной статье используется только база данных DB2 version 9.0, однако концепция работает с любой другой базой данных, поддерживающейся JDBC-адаптером IBM.

Перед началом создания приложения необходимо настроить базы данных и таблицы, которые оно будет использовать. Файл jdbcscripts.zip, ссылка на который приведена в разделе "Загрузка", содержит сценарий создания базы данных ABCFIN. Эта база данных включает в себя таблицу Customer, которую будет синхронизировать приложение, и таблицу событий, которую адаптер ресурсов JDBC будет опрашивать для создания входящих событий.

  1. Загрузите сценарии создания базы данных, ссылка на которые приведена в разделе "Загрузка" в конце данной статьи, во временный каталог.
  2. Запустите процессор командной строки DB2 (в Windows), выбрав Start - Program Files - IBM DB2 - Command Line Tools - Command Line Processor.
  3. Введите quit в запросе db2 => в окне DB2 CLP. При этом вы выйдете из режима процессора командной строки DB2, для того чтобы можно было изменить каталоги.
  4. Перейдите во временный каталог, в который вы загрузили сценарии на шаге 1. Окно DB2 CLP должно выглядеть примерно так, как показано на рисунке 5.
  5. Выполните оба сценария создания базы данных, введя следующие команды:
    db2 –tf jdbc_source_script_db2.sqldb2 –tf
    jdbc_target_script_db2.sql

Этот пример и сценарии создания базы данных предполагают, что у вас имеется настроенный пользователь db2admin.

На рисунке 5 показан процесс выполнения первой команды. Для каждого сценария запрашивается пароль db2admin и выводится сообщение, говорящее о завершении SQL-команды после окончания выполнения сценария.

Рисунок 5. Выполнение сценариев создания баз данных
Рисунок 5. Выполнение сценариев создания баз данных

На рисунке 6 показана таблица eventstore после выполнения сценариев создания баз данных. Таблицы можно увидеть путем выбора Start - Program Files - IBM DB2 - General Administration Tools - Control Center , а затем Control Center - All Databases - ABCFIN - Tables.

В "Руководстве пользователя по WebSphere Adapter for JDBC" (см. раздел "Ресурсы") рассматриваются поля таблицы eventstore, но давайте кратко рассмотрим, как эта таблица будет использоваться. Таблица eventstore заполняется при выполнении одного из триггеров базы данных. Вернемся к рисунку 3. Триггер устанавливает значение object_key в значение pkey (первичный ключ) таблицы Customer. JDBC-адаптер использует object_key в качестве индекса таблицы Customer для извлечения изменившейся строки. Затем он передает данные, содержащиеся в этой строке, в виде бизнес-графа в компонент export модуля.

Рисунок 6. Содержимое базы данных eventstore после выполнения сценария создания базы данных
Рисунок 6. Содержимое базы данных eventstore после выполнения сценария создания базы данных

Мы завершили настройку базы данных и готовы к обнаружению сервисов в базах данных.

Импорт адаптера ресурсов JDBC

Чтобы иметь возможность запуска мастера Enterprise Service Discovery, необходимо импортировать адаптер ресурсов JDBC в рабочую область (workspace).

  1. В виде Business Integration щелкните правой кнопкой мыши и выберите Import.
  2. В открывшемся диалоговом окне Import выберите RAR-файл и нажмите кнопку Next.
  3. Возле Connectorfile нажмите Browse и найдите <WIDInstallDIR>/Resource Adapters/JDBC/deploy, как показано на рисунке 7.
    Рисунок 7. Импорт адаптера ресурсов JDBC
    Рисунок 7. Импорт адаптера ресурсов JDBC
  4. Выберите файл CWYBC_JDBC.rar, нажмите Open, а затем кнопку Finish. Если откроется диалоговое окно, запрашивающее разрешение на переход в перспективу J2EE, нажмите кнопку No, поскольку мы собираемся продолжить работу в виде Business Integration.

Кроме импортирования адаптера ресурсов JDBC необходимо также добавить два jar-файла из установки DB2 в рабочую область и поместить их в путь компоновки проекта адаптера ресурсов. Для различных баз данных нужно копировать различные jar-файлы; обратитесь к документации по адаптеру для более подробной информации (см. раздел "Ресурсы").

  1. В вашей файловой системе найдите db2jcc.jar и db2jcc_license_cisuz.jar в <DB2_Install_Location>/SQLLIB/java.
  2. Выбрав оба файла в Windows Explorer, щелкните правой кнопкой мыши и выберите Copy.
  3. Для отображения модулей коннектора выберите Window - Show View - Physical Resources (модули коннектора не отображаются в виде Business Integration).
  4. В виде Physical Resources щелкните правой кнопкой мыши на CWYBC_JDBC - connector module и выберите Paste. Должен появиться проект CWYBC_JCBC, как показано на рисунке 8.
    Рисунок 8. Добавление jar-файлов базы данных в рабочую область
    Рисунок 8. Добавление jar-файлов базы данных в рабочую область
  5. Щелкните правой кнопкой мыши на папке CWYBC_JDBC и выберите Properties.
  6. В левой части страницы свойств выберите Java Build Path, а затем перейдите в закладку Libraries.
  7. Нажмите AddJARs, затем под CWYBC_JD - connector module выберите оба jar-файла db2jcc так, как показано на рисунке 9. Нажмите кнопку OK в диалоговом окне JAR Selection, а затем нажмите кнопку OK в диалоговом окне свойств проекта коннектора.
    Рисунок 9. Добавление jar-файлов базы данных в путь компоновки проекта адаптера ресурсов
    Рисунок 9. Добавление jar-файлов базы данных в путь компоновки проекта адаптера ресурсовh

Рисунок 9. Добавление jar-файлов базы данных в путь компоновки проекта адаптера ресурсов

Теперь, после импортирования и настройки адаптера ресурсов JDBC, все готово для обнаружения сервисов с использованием мастера Enterprise Service Discovery. В данном разделе мы создадим компонент export, из которого адаптер передает обновления при изменении таблицы базы данных. Мы создадим компонент export с интерфейсом и бизнес-объектами, соответствующими обнаруженным сервисам.

В первой последовательности действий настраивается мастер Enterprise Service Discovery для подключения к базе данных:

  1. Перейдите обратно в вид Business Integration, щелкните правой кнопкой мыши и выберите File - New - Enterprise Service Discovery.
  2. Как показано на рисунке 10, в списке адаптеров ресурсов присутствует JDBC EMD Adapter (version 6.0.2.1) from the CWYBC_JDBC Connector Project, который вы импортировали в предыдущем разделе. Выберите его и нажмите кнопку Next.
    Рисунок 10. Обнаружение сервисов при помощи адаптера ресурсов JDBC
    Рисунок 10. Обнаружение сервисов при помощи адаптера ресурсов JDBC

Если вы работаете с DB2 Version 8, нужно использовать строку: jdbc:db2://<servername>:50000/ABCFIN, где servername - это IP-адрес машины, выполняющей DB2 (даже если это локальная база данных). Дополнительная информация по работе в режиме JDBC type 4 приведена в документации по DB2. Необходимо также установить XA DataSource Name в значение com.ibm.db2.jcc.DB2XADataSource и XA Database Name в значение ABCINS.

  1. На странице Configure Settings for Discovery Agent под UserCredentials установите имя пользователя и пароль для вашей базы данных. Эти значения позволяют мастеру подключиться к базе данных для обнаружения сервисов и данных.
  2. Под Machine Credentials для Database URL введите jdbc:db2:ABCFIN, как показано на рисунке 11. Префикс jdbc:db2 указывает, что есть соединение с сервером DB2 UDB, а ABCFIN ссылается на элемент каталога базы данных DB2 на DB2-клиенте.
  3. В поле Jdbc Driver Class введите com.ibm.db2.jcc.DB2Driver, как показано на рисунке 11. Это загрузит DB2 Universal JDBC Driver, необходимый для того, чтобы мастер обнаружения смог подключиться к базе данных. Данное значение специфично для каждого поставщика JDBC; для других баз данных необходимо проконсультироваться с документацией на адаптер и поставщиком JDBC.
    Рисунок 11. Конфигурация соединения для адаптера ресурсов JDBC
    Рисунок 11. Конфигурация соединения для адаптера ресурсов JDBC

На следующих шагах используется мастер Enterprise Service Discovery для обнаружения бизнес-объектов, используемых для извлечения и обновления данных в базе данных. Эти бизнес-объекты будут использоваться в качестве входных и выходных данных для операций компонентов import и export вашего модуля.

  1. Нажмите кнопку Next. Отобразится страница мастера Find and Discover Enterprise Services.
  2. Нажмите ExecuteQuery и разверните DB2ADMIN - Tables. Отобразится таблица CUSTOMER, как показано на рисунке 12.
    Рисунок 12. Запрос к базе данных для обнаружения бизнес-объектов
    Рисунок 12. Запрос к базе данных для обнаружения бизнес-объектов
  3. Выберите CUSTOMER и нажмите кнопку Add to import list. CUSTOMER добавляется в список Objects to be imported.
  4. Нажмите кнопку Next.

На следующей странице создаются операции, доступные для экспорта из базы данных, затем создается модуль, в котором будет расположен компонент export, и настраиваются свойства адаптера.

  1. На экране Configure Objects в поле Service Type выберите Inbound, как показано на рисунке 13. Для остальных значений вы можете принять значения по умолчанию. Это означает, что для сервиса базы данных будут доступны операции Create, Update и Delete.
    Рисунок 13. Выбор входящих операций
    Рисунок 13. Выбор входящих операций
  2. Нажмите кнопку Next. На странице Generate Artifacts рядом с Module нажмите кнопку New, как показано на рисунке 14.
    Рисунок 14. Генерирование артефактов для модуля JDBC-адаптера
    Рисунок 14. Генерирование артефактов для модуля JDBC-адаптера
  3. В открывшемся диалоговом окне New Integration Dialog отметьте флажок Create a module project и нажмите кнопку Next.
  4. В мастере New Integration Project введите ABCFIN в качестве имени модуля и нажмите кнопку Finish. Мастер закроется и снова отобразится мастер Enterprise Service Discovery. По умолчанию названием компонента export (показано рядом с Name) является JDBCInboundInterface.
  5. Установите поле J2C Authentication Data Entry в значение widNode/db2alias. Это значение используется при выполнении приложения для определения, авторизован ли пользователь для подключения к базе данных. Мы настроим ID пользователей, которые будут использовать этот псевдоним на сервере, позже.
  6. Убедитесь в том, что выбран вариант Ensure Use discovered connection properties. Необходимо выбрать Use connection properties specified on server, если на сервере будет настраиваться (или уже настроен) адаптер ресурсов.
  7. Установите DatabaseVendor в значение DB2. Оставьте значения по умолчанию для остальных полей и нажмите кнопку Finish.

На рисунке 15 показано, что находится в ваше рабочей области после создания компонента export при помощи мастера Enterprise Service Discovery. На рисунке 16 показан интерфейс JDBCInboundInterface. Он содержит операции createDb2adminCustomer, updateDb2adminCustomer и deleteDb2adminCustomer, вызываемые адаптером ресурсов JDBC при возникновении событий create, update или delete для строки в базе данных CUSTOMER. Эти операции являются однонаправленными, поскольку они используются только для уведомления приложения о событии в базе данных. Имя учетной записи, используемой для доступа к базе данных (в данном случае Db2admin), добавляется к каждому бизнес-объекту.

Рисунок 15. Рабочая область после создания компонента export JDBC-адаптера
Рисунок 15. Рабочая область после создания компонента export JDBC-адаптера

Каждая операция в интерфейсе принимает бизнес-граф Db2adminCustomerBG, показанный на рисунке 17, в качестве входных данных. Следовательно, при возникновении события, данные в добавленной или измененной строке будут содержаться внутри бизнес-объекта в бизнес-графе.

Рисунок 16. Интерфейс JDBCInboundInterface
Рисунок 16. Интерфейс JDBCInboundInterface
Рисунок 17. Бизнес-граф Db2adminCustomerBG
Рисунок 17. Бизнес-граф Db2adminCustomerBG

Создание исходящего компонента import

В данном разделе мы создадим компонент import, который позволит модулю обращаться к базе данных ABCINS. Мы могли бы создать компонент import так, чтобы приложение могло обращаться также к базе данных ABCFIN, но в данном сценарии нас просто интересуют уведомления об обновлении ABCFIN и последующая синхронизация.

  1. В виде Business Integration щелкните правой кнопкой мыши и выберите New - Enterprise Service Discovery.
  2. Выберите JDBC EMD Adapter (version 6.0.2.1) from the CWYBC_JDBC Connector Project и нажмите кнопку Next.
  3. На странице Configure Settings for Discovery Agent установите имя пользователя и пароль к вашей базе данных, установите поле Database URL в значение jdbc:db2:ABCINS и поле Jdbc Driver Class в значение com.ibm.db2.jcc.DB2Driver. Обратите внимание на то, что данный шаг аналогичен шагу настройки в разделе по компоненту export, за исключением того, что имя базы данных теперь ABCINS, а не ABCFIN.
  4. Нажмите кнопку Next. Нажмите ExecuteQuery и выберите DB2ADMIN - Tables- CUSTOMER.
  5. Нажмите кнопку Add to import list. CUSTOMER добавляется в список Objects to be imported list.
  6. Нажмите кнопку Next и на странице Configure Objects для поля Service Type выберите Outbound.
  7. Нажмите кнопку Next и на странице Generate Artifacts выберите модуль ABCFIN. Это модуль, который мы создали для входящего сервиса.
  8. Установите поле J2C Authentication Data Entry в значение widNode/db2alias.
  9. Убедитесь в том, что отмечен флажок Use discovered connection properties, и установите поле DatabaseVendor в значение DB2. Оставьте значения по умолчанию для остальных полей и нажмите кнопку Finish.

На рисунке 18 показан модуль ABCFIN в виде Business Integration после завершения работы мастера Enterprise Service Discovery для исходящего сервиса. Обратите внимание на то, что теперь имеются интерфейс JDBCOutboundInterface и бизнес-объект Db2adminCustomerContainer.

Рисунок 18. Рабочая область ABCFIN после создания исходящего сервиса
Рисунок 18. Рабочая область ABCFIN после создания исходящего сервиса

JDBCOutboundInterface, показанный на рисунке 19, содержит двунаправленные операции, которые позволяют создавать, обновлять, извлекать и удалять строки базы данных. Операции используют такой же бизнес-граф Db2adminCustomerBG, что и входящие операции. Db2adminCustomerContainer, показанный на рисунке 20, это бизнес-объект, который содержит массив бизнес-графов Db2adminCustomerBG. Это позволяет JDBC-сервису работать с несколькими строками базы данных в операции retrieveAll.

Рисунок 19. Интерфейс Db2adminCustomerContainer
Рисунок 19. Интерфейс Db2adminCustomerContainer
Рисунок 20. Бизнес-объект Db2adminCustomerContainer
Рисунок 20. Бизнес-объект Db2adminCustomerContainer

Мы закончили использование мастера Enterprise Service Discovery для создания компонентов import и export. Если вы сделали ошибку или хотите изменить какие-либо установленные значения, то можете изменить значения EIS binding в виде Property для import или export. Однако вы не можете изменить интерфейс. Если необходимо добавить, удалить или изменить операции, нужно запустить мастер повторно.

Создание бизнес-логики

В данном разделе создается бизнес-логика, которая использует компоненты export и import адаптера ресурсов JDBC, которые вы создали в предыдущих разделах. В зависимости от вида деятельности, бизнес-логика может выполнять различные действия (когда через компонент export проходят изменения в базе данных) перед передачей (извлечением) данных в (из) базу данных через компонент import. Возможно, вы даже захотите, чтобы различные модули использовали компоненты import и export отдельно. В нашем примере мы просто будем поддерживать две базы данных в синхронизированном состоянии, используя один модуль и передавая изменения из ABCINS в ABCFIN. Следовательно, бизнес-логика просто состоит из карты интерфейсов (interface map), которая отображает исходящий интерфейс во входящий интерфейс. Эта бизнес-логика означает, что все вызовы сервиса в компонент export передаются в компонент import.

Для создания карты интерфейсов выполните следующие действия:

  1. Щелкните правой кнопкой мыши на Mapping под ABCFIN и выберите New - Interface Map.
  2. В мастере New Interface Map для Module выберите ABCFIN, а затем для Name введите DataSyncMediation, как показано на рисунке 21.
    Рисунок 21. Мастер New Interface Map
    Рисунок 21. Мастер New Interface Map
  3. Нажмите кнопку Next.
  4. Для интерфейса Source выберите JDBCInboundInteface, а для интерфейса Target выберите JDBCOutboundInterface, как показано на рисунке 22.
    Рисунок 22. Выбор исходного и целевого интерфейсов
    Рисунок 22. Выбор исходного и целевого интерфейсов
  5. Нажмите кнопку Finish. Откроется редактор Interface Map.
  6. В редакторе Interface Map соедините три операции JDBCInboundInterface с первыми тремя операциями JDBCOutboundInterface, как показано на рисунке 23.
    Рисунок 23. Реализация карты интерфейсов
    Рисунок 23. Реализация карты интерфейсов
  7. Для каждого соединения, которые вы создали на предыдущем шаге, нажмите на соединение, затем соедините параметр входящей операции с входом исходящей операции. Поскольку мы просто копируем данные однонаправленной операцией, ответные данные отображать не нужно.
  8. Сохраните содержимое редактора Interface Map.
  9. Откройте сборочную схему, выполнив двойной щелчок левой кнопкой мыши на ABCFIN - Assembly Diagram. Вы увидите компоненты import и export, которые были созданы мастером Enterprise Service Discovery.
  10. Разверните ABCFIN - Mapping и перетащите карту интерфейсов DataSyncMediation на сборочную схему.
  11. Щелкните правой кнопкой мыши на DataSyncMediation в сборочной схеме и выберите Wire to existing. Поскольку только один интерфейс соответствует компоненту JDBCInboundInterface export (это интерфейс, который мы выбрали для DataSyncMediation) и только один интерфейс соответствует ссылке DataSyncMediation (компонент JDBCOutboundInterface import), соединения выглядят так, как показано на рисунке 24.
    Рисунок 24. Модуль ABCFIN
    Рисунок 24. Модуль ABCFIN

Мы завершили реализацию, использующую компоненты import и export адаптера ресурсов JDBC. В следующем разделе мы выполним приложение.

Развертывание и выполнение на сервере

Перед запуском приложения адаптера ресурсов JDBC необходимо настроить сервер так, чтобы этот адаптер ресурсов мог аутентифицироваться в базе данных. Первым шагом является отображение псевдонима, упоминавшегося ранее, на ID пользователя и пароль для базы данных.

  1. Щелкните правой кнопкой мыши на WebSphere Process Server в виде Servers и выберите Start.
  2. После начала работы сервера щелкните правой кнопкой мыши на сервере и выберите Run administrative console.
  3. Когда откроется страница Welcome консоли администратора, нажмите кнопку Log in, введите имя пользователя и пароль, если разрешена система защиты сервера.
  4. Разверните Security и выберите Global security, а затем нажмите J2C Authentication data, как показано на рисунке 25.
    Рисунок 25. Создание нового псевдонима аутентификации
    Рисунок 25. Создание нового псевдонима аутентификации
  5. В верхнем левом углу страницы Global security нажмите кнопку New.
  6. В поле Alias введите db2alias, а в полях User ID и Password введите корректные ID пользователя и пароль для вашей установки DB2, как показано на рисунке 26.
    Рисунок 26. Создание псевдонима аутентификации DB2
    Рисунок 26. Создания псевдонима аутентификации DB2
  7. Нажмите кнопку OK, ссылку save, а затем кнопку Save.

Затем необходимо добавить модуль к серверу.

  1. Щелкните правой кнопкой мыши на сервере в виде Servers и выберите Add and remove projects.
  2. В Available projects выберите ABCFINApp и нажмите кнопку Add, как показано на рисунке 27.
    Рисунок 27. Добавление модуля на сервер
    Рисунок 27. Добавление модуля на сервер
  3. Нажмите кнопку Finish.

После успешного опубликования всех компонентов вы увидите сообщение Polling has started в консоли. Это сообщение обозначает, что ваш сервер прослушивает события, возникающие в базе данных.

Теперь давайте посмотрим, как работает приложение синхронизации баз данных. Для этого можно добавить строку в таблицу CUSTOMER базы данных ABCFIN (это база данных, в синхронизации с которой мы хотим поддерживать базу данных ABCINS). Это вызывает выполнение ранее созданного триггера, и в базу данных событий помещается событие.

  1. Откройте DB2 Control Center и в All Databases - ABCFIN - Tables выполните двойной щелчок левой кнопкой мыши на таблице CUSTOMER, показанной на рисунке 28, чтобы ее открыть.
    Рисунок 28. Выбор таблицы CUSTOMER
    Рисунок 28. Выбор таблицы CUSTOMER
  2. Нажмите кнопку Add Row и введите значения в новой строке, как показано на рисунке 29.
    Рисунок 29. Добавление строки в таблицу базы данных
    Рисунок 29. Добавление строки в таблицу базы данных
  3. Нажмите кнопку Commit. Вы увидите сообщения deliverEvent и sendEvent в консоли, когда JDBC-адаптер опросит таблицу событий и заметит новые записи.
  4. Теперь в базе данных ABCINS откройте таблицу CUSTOMER. Вы должны увидеть строку, показанную на рисунке 30.
Рисунок 30. Обновленная таблица CUSTOMER
Рисунок 30. Обновленная таблица CUSTOMER

Как можно заметить, база данных ABCINS теперь содержит значения, которые вы ввели в новую строку в базе данных ABCFIN.


Заключение

В данной статье вы познакомились с основами адаптера ресурсов JDBC, а также с тем, как он поддерживает входящую и исходящую обработку. Вы настроили две базы данных для примера и создали приложение, использующее адаптер ресурсов для копирования всех изменений в другую базу данных.


Загрузка

ОписаниеИмяРазмер
Сценарии 1 и 2 создания базы данныхjdbcscripts.zip2 KB
Готовое приложениеcompletedmodule.zip9 KB

Ресурсы

Научиться

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

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


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


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

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

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

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

Выберите имя, которое будет отображаться на экране



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

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

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

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

 


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


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=WebSphere, SOA и web-сервисы
ArticleID=316014
ArticleTitle=Подключение при помощи адаптеров WebSphere Integration Developer: Часть 3. WebSphere Adapter for JDBC
publish-date=06232008