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

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

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

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

  • Закрыть [x]

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

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

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

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

  • Закрыть [x]

Технический журнал разработчика IBM WebSphere: Построение решений SOA при помощи Компонентной Архитектуры Сервисов - Часть 3

Интегрирование модулей SCA при помощи импорта и экспорта

Роланд Барсиа, дипломированный специалист по IT, IBM
Роланд Барсиа (Roland Barcia) - дипломированный специалист по информационным технологиям для IBM Software Services for WebSphere в районе New York/New Jersey Metro. Он является соавтором IBM WebSphere: Развертывание и дополнительные конфигурации. Чтобы узнать больше о Роланде, посетите его Web сайт.
Джефф Брэнт, инженер-консультант по программному обеспчению, IBM
Джефф Брэнт (Jeff Brent) - инженер-консультант по программному обеспечению для команды Сервис-Ориентированной Архитектуры и технический руководитель для WebSphere Process Server SWAT из West Palm Beach, Флорида. В свободное время он любит проводить время с семьей и играть в баскетбол.

Описание:  Построение вертикальных интеграционных решений из ряда компонентов при помощи Компонентной Архитектуры Сервисов (SCA) и IBM® WebSphere® Integration Developer.

Дата:  22.02.2006
Уровень сложности:  средний
Активность:  1251 просмотров
Комментарии:  


Введение

В Части 1 данного цикла мы представили Компонентную Архитектуру Сервисов (SCA) как модель программирования для построения и сборки интеграционных решений с обзором SCA и дали определение некоторым связанным с ней терминам. В Части2 мы обсудили ссылки и квалификаторы и объяснили, как связать различные компоненты вместе, чтобы создать модуль SCA. В Части 3 мы ближе рассматриваем одно из наибольших преимуществ построения модулей SCA - возможность вертикального построения интеграционных решений из множества компонентов.

С ростом и усложнением систем становится необходимым интегрировать различные решения горизонтально; различные подразделения одной организации могут нуждаться в построении собственных решений и их последующей интеграции, или возможно различным партнерам по бизнесу нужно будет интегрировать свои решения через интернет. Рисунок 1 показывает пример этой горизонтальной интеграции:


Рисунок 1. Интегрирующие системы
Рисунок 1. Интегрирующие системы

Мы определили импорт и экспорт SCA в Части 1, здесь мы их изучим глубже и продолжим построение нашего примера. Конкретно, мы сосредоточимся на импорте и экспорте SCA с использованием SCA соединения. Соединение SCA позволяет компонентам SCA в одном модуле взаимодействовать с компонентами SCA в другом модуле с использованием модели программирования SCA.

Вместе с выходом этой статьи также вышла новая версия IBM WebSphere Integration Developer V6.0.1, которая позволяет нам строить интеграционные решения, которые сводят вместе решения IBM WebSphere Process Server V6.0.1 или IBM WebSphere Enterprise Service Bus V6.0.1. С этой новой версией мы также добавляем поддержку построения посредников для корпоративной сервисной шины (ESB). (Рабочий цикл WebSphere ESB - это сокращенная версия WebSphere Process Server; см. Ресурсы для дополнительной информации.)


Общий обзор импорта и экспорта

Как мы упоминали в Части 1, механизмы используемые для вызова от модуля к модулю и от модуля к внешнему сервису называются импорт и экспорт , соответственно. Импорт и экспорт представляются из перспективы модуля - замкнутый пакет компонентов, которые выполняют определенную бизнес-функцию:

  • Когда модуль желает предоставить возможность другому объекту (внешнему сервису или другому модулю) запустить бизнес-функцию, он экспортирует эту возможность. Экспорт также предоставляет возможность сделать этот сервис доступным для некоторого количества различных транспортных протоколов. Экспорт ассоциируется с отдельным компонентом внутри модуля.

  • Когда модуль желает использовать возможность другого объекта (внешнего сервиса и или модуля), он будет импортировать эту функцию. Импорт также предоставляет возможность взаимодействовать с сервис-провайдерами через множество транспортных протоколов.

Рисунок 2 показывает сборку SCA при помощи импорта и экспорта. Рисунок показывает, что экспорт представляет собой точку входа снаружи, а импорт позволяет вам сделать вызов из модуля наружу.


Рисунок 2. Импорт и экспорт SCA
Рисунок 2. Импорт и экспорт SCA

При запуске компонентов SCA через импорт и экспорт, параметры проходят без значений, это значит, что параметры копируются от одной структуре к другой. Рисунок 3 показывает два модуля SCA, сообщающихся друг с другом и иллюстрирует, как импорт SCA соответствует SCA экспорту.


Рисунок 3. Импорт и экспорт SCA
Рисунок 3. Импорт и экспорт SCA

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

Импорт и экспорт также могут привязываться к другим технологиям, таким как JMS, Enterprise JavaBeans (EJB) или Web сервисы, как показано на рисунке 4. Связывание с этими технологиями позволяет клиенту Web сервиса запускать модуль SCA, или позволяет модулю SCA запускать существующий EJB модуль с использованием модели программирования SCA (Существуют некоторые ограничения на использование импорта EJB, поскольку он определяется интерфейсом Java™; поэтому, элементы вроде BPEL, который требует от партнеров поддержки WSDL, не могут запускать импорт EJB. Позже выйдет дополнительная информация на эту тему).


Рисунок 4. Импорт и экспорт с другими технологиями
Рисунок 4. Импорт и экспорт с другими технологиями

Связывание при помощи импорта и экспорта

Ключевой особенностью сервис-ориентированной архитектуры является возможность выставлять сервисы для нескольких связывающих опций и возможность вызывать сервисы с использованием норм индустрии. Как указано, WebSphere Process Server и WebSphere ESB предоставляет несколько различных типов связок для облегчения этой задачи. Типы связок объединяются с импортом и экспортом с использованием Редатора Сборки. Сегодня существует пять основных видов связок:

  1. SCA - Связка, используемая для SCA вызовов между модулями, этот тип связки проще всего конфигурировать и он предоставляет однородную интеграцию между модулями.

  2. Web сервис - Предоставляет возможность запускать существующие Web сервисы и представлять функционирование внутри модуля как Web сервис. По умолчанию, Web сервис использует стиль doc-lit wrapped и может быть использован с протоколом HTTP и JMS. Возможности связывания Web сервиса получаются из лежащего в его основе базового механизма Web сервиса WebSphere Application Server и подвергаются тем же ограничениям.

  3. Корпоративные Информационные Системы (EIS) - Предоставляют возможность интегрировать существующие EIS системы через WebSphere JCA Адаптер. Конфигурация, доступная для этого типа связки, будет варьироваться в зависимости от цели (SAP, JDBC Адаптер и так далее). Сервисы Обнаружения Данных Компании обычно оснащаются каждым адаптером для облегчения создания бизнес объекта и импортных и экспортных связок.

  4. Сервис Java Сообщений - Предоставляет возможность интегрировать с конечными точками, которые используют JMS как протокол сообщений. Импорт и экспорт в этом случае используют связывание данных, чтобы помочь принять правильную комбинацию бизес-объектов/операций.

  5. Компонент сессии, не сохраняющий состояние (stateless session bean)- Предоставляет возможность интегрировать в компоненты сессии, не сохраняющие состояние, используя Java интерфейс. Эта возможность доступна только при привязке ссылки Java к Java интерфейсу. Комонентам, которые используют ссылки WSDL, не разрешается в WebSphere Integration Developer привязываться к Java интерфейсу, предоставленному такими компонентами. В этом случае требуется промежуточный компонент с интерфейсом WSDL и Java ссылкой.

В данной статье мы более подробно рассмотрим SCA связки. Последующие статьи этого цикла будут посвящены более внимательному изучению некоторых других импортных/экспортных связей.


Связки SCA

Связка SCA предоставляет совместимое средство для общения между границами модулей в WebSphere Process Server или в среде WebSphere ESB. Основной протокол, используемый связками SCA, выбирается автоматически в зависимости от модели вызова, используемой клиентским модулем.

SCA предоставляет четыре модели вызова.

  • Синхронная - Клиент посылает запрос и ожидает ответа.
  • Асинхронная односторонняя - Клиент посылает запрос, а ответ не ожидается.
  • Асинхронная с отсроченным ответом - Клиент посылает запрос, ответа потребует позже.
  • Асинхронная обратный вызов - Клиент посылает запрос, а целевой компонент с ответом обращается к сервису, назначенному клиентом.

Рабочий цикл SCA WebSphere Process Server или WebSphere ESB решит, когда использовать базовый канал интеграции систем (для асинхронных моделей вызова) или RMI/IIOP (для синхронной модели вызова).

Способность SCA к связыванию компонентов управляется экспортом. В процессе инсталляции модуля SCA на WebSphere Process Server создаются необходимые артефакты поддержки:

  • Для асинхронных вызовов создаются отдельные ячейки адреса шины интеграции сервисов (SIBus) в SCA.SYSTEM.<cell name>.Bus.
  • Для синхронного общения отдельная ячейка пространства имен связана, значит, создан модуль компонента сессии; компонент сессии не сохраняет состоянии, поэтому его можно использовать для любых целей, таких как единичная работа со связями, конфигурация безопасности и так далее.

Файлы импорта и экспорта работают вместе, так как файл импорта содержит важную информацию об экспорте, что помогает любому числу клиентов импортировать целевой сервис.

Используя информацию файла .import и модель вызова (синхронную или асинхронную), рабочий цикл SCA определяет, использовать ли адрес SIBus или связку пространства имен WebSphere.

Создается несколько адресов SIBus (см. Ресурсы) для поддержки множества типов асинхронных вызовов, которые предоставляют WebSphere Process Server и WebSphere ESB; адреса создаются для модуля, компонента, импорта и экспорта. Каждый адрес и маршрут прямого направления удостоверяет, что сообщения направлены к правильному целевому сервису. Рисунок 5 показывает пример адресов SIBus.


Рисунок 5. Адреса SIBus
Рисунок 5. Адреса SIBus

Вдобавок, создается связка пространства имен для каждого экспорта SCA внутри модуля, как показано на рисунке 6. Эта связь создается в отдельной ячейке и следует следующей модели именования:

sca_ + <Имя Модуля> + _экспорт_ + <ИмяЭкспорта>.


Рисунок 6. Связки пространства имен
Рисунок 6. Связки пространства имен

Получив рамки при помощи этих двух наборов артефактов, экспортная связка SCA становится видимой сквозь ячейку. Клиентский модуль и целевой модуль могут быть помещены на любой сервер WebSphere Process Server или WebSphere ESB сервер в ячейке и все еще быть способны общаться.


Квалификаторы импорта

Импорт со связкой SCA - это логической представление компонента SCA в другом модуле. По существу, вы можете определять квалификаторы на ссылку, которая указывает на импорт, как показано на рисунке 7.


Рисунок 7. Добавление квалификатора
Рисунок 7. Добавление квалификатора

Экспорт не содержит никаких квалификаторов; вместо этого, вы можете наложить квалификатор на экспортируемый компонент, что детально описывается в Части 2.


Библиотечные проекты

Пересекая границы модулей, следует иметь в виду, что контракты у них общие. Приложения общаются через интерфейсы и передают друг другу объекты данных. Это означает, что интерфейсы и бизнес-объекты должны быть видимы, либо расположены рядом с модулями. Чтобы меньше дублировать определение одних и тех же интерфейсов и объектов данных в каждом модуле, WebSphere Integration Developer содержит специальный библиотечный модуль SCA, который может быть добавлен к SCA модулю практически, как файл Java JAR может быть зависимым JAR в EAR файле. (Фактически, так WebSphere Integration Developer и обращается с библиотекой.) Это позволяет вам определять интерфейсы и бизнес-объекты в одном месте и позволить, чтобы все модули их совместно использовали. Пример библиотеки SCA мы увидим позже.

Наша модель приложения

Мы продолжим наш пример приложения Утверждения Кредита, используемый на всем протяжении цикла. В данной статье, мы покажем, как конфигурировать экспорт и импорт, экспортируя модули Кредитная История и Кредитное Агенство в отдельные модули. В целях иллюстрации, мы также покажем как разделять библиотеки SCA между модулями.

Чтобы выполнить этот пример, вам понадобится правильно установить и запустить на своем компьютере WebSphere Integration Developer V6.0.1 (который поддерживает WebSphere ESB) (см. Ресурсы), а также загрузить материалы, включенные в данную статью, которые содержат два SCA модуля (модули Кредитное агенство и Кредитная История) а также библиотеку SCA с совместными интерфейсами и бизнес-объектами.

  1. Настройка рабочей области.

    1. Запустите WebSphere Integration Developer. Откройте новую рабочую область и закройте экран приветствия.

    2. Вам потребуется импортировать скачанный вами Обмен Проектами (Project Interchange). Чтобы импортировать Обмен Проектами, щелкните правой кнопкой на отображении Бизнес-интеграция, а затем выберите Импорт, как показано на рисунке 8.


      Рисунок 8. Мастер импорта Eclipse
      Рисунок 8. Мастер импорта Eclipse
    3. Выберите Обмен Проектами , а затем Далее (Рисунок 9).


      Рисунок 9. Импорт Обмена Проектов
      Рисунок  9. Импорт Обмена Проектов
    4. Выберите скачанный файл <Каталог_загрузки>/SCAArticlePart3.zip, затем Выбрать Все и Готово (Рисунок 10).


      Рисунок 10. Выбрать Все
      Рисунок 10. Выбрать Всеl
  2. Изучите артефакты, которые мы только что импортировали:

    1. Из перспективы Бизнес-Интеграция, разверните CreditApprovalLibrary. Как уже упоминалось ранее, библиотека SCA - это удобный способ хранения бизнес объектов и интерфейсов, которые используются модулями совместно. Рисунок 11 показывает CreditApprovalLibrary в отображении Бизнес Интеграция.


      Рисунок 11. CreditApprovalLibrary
      Рисунок 11. CreditApprovalLibrary

      Вы легко можете создать проект Библиотека из контекстного меню в отображении Бизнес Интеграция, выбрав Новая => Библиотека. В данном примере мы уже создали интерфейсы и объекты данных.

    2. Разверните модули CreditAgencySCAModule и CreditHistory.

    3. Откройте редактор сборки для каждого модуля. В нашем предыдущем примере в Части 2 у нас был один модуль с несколькими компонентами. В данном примере мы отделили нашу реализацию, чтобы сымитировать отдельные решения. Обычно модуль SCA имеет полное решение с несколькими компонентами. Для этой статьи мы договоримся, что это законченные решения, разработанные различными группами разработчиков (с различными менеджерами, графиками и планами проектов). Рисунок 12 показывает модули SCA в отображении Бизнес Интеграция.


      Рисунок 12. Модули SCA
      Рисунок 12. Модули SCA
    4. Оба модуля SCA зависят от модуля SCA библиотеки; эта зависимость может быть просмотрена в Редакторе Зависимостей. Щелкните правой кнопкой на каждый из SCA модулей, по одному за раз и выберите Открыть Редактор Зависимостей (Рисунок 13).


      Рисунок 13. Открытие Редактора Зависимостей
      Рисунок 13. Открытие Редактора Зависимостей
    5. Изучите Редактор Зависимостей для каждого модуля, чтобы убедиться, что CreditApprovalLibrary используется модулями совместно, в этом случае CreditApprovalLibrary отобразится как на рисунке 14.


      Рисунок 14. CreditApprovalLibrary
      Рисунок 14. CreditApprovalLibrary
    6. Закройте редакторы.

Создание экспорта SCA

Далее, мы создадим экспорт SCA для каждого модуля, чтобы модуль мог быть вызван из других модулей SCA.

  1. Создайте экспорт для CreditAgencySCAModule:

    1. В WebSphere Integration Developer откройте редактор сборки CreditAgencySCAModule. Разверните CreditAgencySCAModule в отображении Бизнес Интеграция и щелкните дважды на иконке Редактора Сборки CreditAgencySCAModule , как показано ниже на рисунке 15.


      Рисунок 15. Открытие Редактора Сборки
      Рисунок 15. Открытие Редактора Сборки
    2. Чтобы создать экспорт, щелкните правой кнопкой на компоненте CreditApproval и выберите Экспорт =>Связка SCA (Рисунок 16).


      Рисунок 16. Создание SCA экспорта при помощи всязки SCA
      Рисунок 16. Создание SCA экспорта при помощи всязки SCA
    3. Экспорт для компонента CreditAgency с SCA связкой будет автоматически создан, как показано на рисунке 17.


      Рисунок 17. Экспорт SCA
      Рисунок 17. Экспорт SCA
    4. Изучите свойства экспорта через отображение Свойства, выбрав экспорт в редакторе сборки. Во вкладке Детали вы заметите SCA детали операции, как показано на рисунке 18.


      Рисунок 18. Детали экспорта SCA
      Рисунок 18. Детали экспорта SCA
    5. Переключитесь на закладку Квалификаторы (Рисунок 19). Вы заметите, что не можете добавить никакие квалификаторы. Это происходит потому, что экспорт использует только квалификаторы компонента, на который он указывает.


      Рисунок 19. На экспорт нельзя добавлять квалификаторы
      Рисунок 19. На экспорт нельзя добавлять квалификаторы
    6. Сохраните и закройте редактор сборки.

  2. Подобным же образом, создайте экспорт для CreditHistorySCAModule:

    1. Как в предыдущем случае откройте редактор сборки для CreditHistorySCAModule.

    2. Создайте экспорт при помощи связки SCA, как описано выше (Рисунок 20).


      Рисунок 20. Экспорт SCA
      Рисунок 20. Экспорт SCA
    3. Сохраните и закройте редактор.


Создание модуля Утверждения Кредитов

Теперь мы создадим модуль CreditApprovalModule, который будет вызывать два других решения путем импорта.

  1. Во-первых, создайте новый SCA модуль:

    1. Щелкните правой кнопкой на отображении Бизнес Интеграция и выберите Новый => Модуль.

    2. Назовите модуль CreditApprovalSCAModule (Рисунок 21). Убедитесь, что выбрано Использование по умолчанию, затем выберите Готово.


      Рисунок 21. Новый SCA модуль
      Рисунок 21. Новый SCA модуль
    3. Щелкните правой кнопкой на вновь CreditApprovalSCAModule и выберите Открыть Редактор Зависимостей (Рисунок 22).


      Рисунок 22. Открытие Редактора Зависимостей
      Рисунок 22. Открытие Редактора Зависимостей
    4. Так как модель CreditApproval будет вызывать два других модуля, мы должны разделить интерфейсы и бизнес-объекты, которые будут пересылаться. Помните, что мы используем библиотеку для их хранения. В Редакторе Зависимостей выберите Добавить в секции библиотек, как показано на рисунке 23.


      Рисунок 23. Добавление Библиотеки в SCA модуль
      Рисунок 23. Добавление Библиотеки в SCA модуль
    5. Выберите CreditApprovalLibrary и OK.

  2. Теперь мы создадим вызывающий компонент. В целях демонстрации мы будем использовать простой компонент, основанный на Java; в будущих статьях, мы покажем, как поток BPEL вызывает различные компоненты и модули.

    1. Откройте редактор сборки для CreditApprovalSCAModule, дважды щелкнув на исконке Сборка CreditApprovalSCAModule (Рисунок 24).


      Рисунок 24. Открытие Редактора Сборки SCA
      Рисунок 24. Открытие Редактора Сборки SCA
    2. Перетащите SCA компонент Иконка Компонента (Рисунок 25) на редактор сборки.


      Рисунок 25. Перетащите SCA компонент на Редактор Сборки
      Рисунок 25. Перетащите SCA компонент на Редактор Сборки
    3. Переименуйте компонент CreditApproval, щелкнув на тексте и напечатав название, как показано на рисунке 26.


      Рисунок 26. Изменение имени компонента
      Рисунок 26. Изменение имени компонента
  3. Далее мы добавим к нашему компоненту интерфейс. Мы сохранили интерфейс в проекте Библиотека.

    1. Щелкните иконку Интерфейс (обведенную на рисунке 27) на компоненте, затем выберите CreditRequest из меню.


      Рисунок 27. Добавление интерфейса к SCA компоненту
      Рисунок 27. Добавление интерфейса к SCA компоненту
    2. Нажмите OK.

Мы только что создали SCA компонент. Этот SCA компонент запустит другие наши два модуля через импорт.


Создание импорта

Закончив создание экспорта, мы теперь готовы создать наш SCA импорт. Для каждого экспорта, который мы собираемся вызывать, мы должны создать отдельный SCA импорт. В нашем случае, мы:

  • Вызовем модуль CreditAgency, а также CreditHistory.
  • Обновим квалификатор для импорта CreditHistory, чтобы поддержать правильное проведение транзакций при асинхронном вызове компонента.
  • Получение запроса по Кредитной Истории займет некоторое время, поэтому мы совершим асинхронный вызов этого компонента.
  • После запроса синхронно запустим модуль CreditAgency.
  • После получения кредитного балла получим с задержкой ответ по Кредитной Истории.
  1. Во-первых, создадим импорт для запуска CreditAgency:

    1. Перетащите иконку импорт из палитры на редактор сборки (Рисунок 28).


      Рисунок 28. Перетащите импорт на Редактор Сборки
      Рисунок 28. Перетащите импорт на Редактор Сборки
    2. Переименуйте импорт, щелкнув на тексте и вписав CreditAgencyImport, как показано на рисунке 29.


      Рисунок 29. Переименование импорта
      Рисунок 29. Переименование импорта
  2. Далее, мы добавим подходящий интерфейс. В данном случае, интерфейс для импорта должен подходить к импорту для соответствующего экспорта в модуле CreditAgencySCAModule.

    Щелкните иконку Интерфейс, расположенную поверх Импорта (обведена на рисунке 30), затем выберите интерфейс CreditAgency.


    Рисунок 30. Добавление импорта в импорт SCA
    Рисунок 30. Добавление импорта в импорт SCA
  3. Добавьте соответствующую связку, в данном случае, связку SCA:

    1. Щелкните правой кнопкой на импорте и выберите Создать связку => Связка SCA (Рисунок 31).


      Рисунок 31. Добавление SCA связки к Импорту
      Рисунок 31. Добавление SCA связки к Импорту
    2. Выделив импорт в редакторе сборки, перейдите к отображению Свойства и выберите секцию Связка (Рисунок 32). Щелкните Пролистать.


      Рисунок 32. Просмотр экспорта
      Рисунок 32. Просмотр экспорта
    3. Выберите CreditAgencyExport (Рисунок 33).


      Рисунок 33. Выбор экспорта
      Рисунок 33. Выбор экспорта
  4. Далее, нам необходимо привязать компонент CreditApproval к CreditAgencyImport.

    1. Выберите компонент CreditApproval в редакторе сборки и пертащите связку к CreditAgencyImport.


      Рисунок 34. Привязка компонента SCA к SCA импорту
      Рисунок 34. Привязка компонента SCA к SCA импорту
    2. Нажмите OK в диалоговом окне, чтобы создать ссылку на компонент CreditApproval (Рисунок 35). (Ссылки обсуждались в Части 2.)


      Рисунок 35. Подтверждение создания ссылки
      Рисунок 35. Подтверждение создания ссылки
    3. Сохраните редактор, не закрывайте его. Ниже появится цифра, показывающая конечный результат связанного компонента.


      Рисунок 36. Связанный SCA модуль
      Рисунок 36. Связанный SCA модуль
  5. Далее мы создадим импорт для CreditHistoryModule.

    1. Как в предыдущем случае перетащите еще один импорт на редактор сборки и назовите его CreditHistoryImport.

    2. Добавьте к импорту интерфейс CreditHistory, как показано на рисунке 37.


      Рисунок 37. Добавление Интерфейса Кредитной Истории
      Рисунок 37. Добавление Интерфейса Кредитной Истории
    3. Создайте связку SCA и привяжите CreditApproval к CreditHistoryImport. Рисунок 38 показывает конечный результат.


      Рисунок 38. Конечный результат
      Рисунок 38. Конечный результат

Помните, мы предполагаем, что запрос компонента Credit History занимает немного больше времени, поэтому мы сначала запустим асинхронный вызов, чтобы получить Историю, а ответ извлечем позже. Пока CreditHistory выполняется, мы получим Кредитный Балл из модуля CreditAgency. Затем мы получим ответ из CreditHistory. Мы можем сделать асинхронный вызов модуля Credit History, используя правильный SCA API для "сервиса". В данном случае мы хотим использовать модель отсроченного ответного вызова, описанную ранее.


Создание реализации

  1. Теперь мы создадим реализацию для компонента CreditApproval. В нашем примере мы будем использовать простой Java компонент.

    1. В редакторе сборки, щелкните правой кнопкой на компоненте CreditApproval и выберите Создать Реализацию=> Java.


      Рисунок 39. Создание Java реализации
      Рисунок 39. Создание Java реализации
    2. Теперь выберите пакет по умолчанию (Рисунок 40).


      Рисунок 40. Пакет по умолчанию
      Рисунок 40. Пакет по умолчанию
    3. Выберите Да в диалоге Выполнить Как..., чтобы создать подходящий Java интерфейс, на случай если позже вы захотите добавить локального Java клиента (Рисунок 41).


      Рисунок 41. Создание Java Интерфейса для локальных Java клиентов
      Рисунок 41. Создание Java Интерфейса для локальных Java клиентов
  2. Теперь мы напишем реализацию.

    1. Класс реализации должен быть открыт в Редакторе Java. Как вы можете видеть в редакторе Java, WebSphere Integration Developer добавил удобных помощников для контакта с партненрами путем изучения сборки модуля. Если бы мы сначала создали класс Java, этих методов бы не существовало.

      public CreditAgency locateService_CreditAgencyPartner() {
      	return (CreditAgency) ServiceManager.INSTANCE
      			.locateService("CreditAgencyPartner");
      }
      
      public CreditHistory locateService_CreditHistoryPartner() {
      	return (CreditHistory) ServiceManager.INSTANCE
      			.locateService("CreditHistoryPartner");
      }

    2. Вставьте приведенный ниже код программы (из <каталог_загрузки>/SCAArticleSeries3/codeSnippet1.txt) внутрь метода calulateCreditScore. Модель асинхронного вызова выделена жирным шрифтом.

      ServiceManager serviceManager = 
      new ServiceManager();
      
      // создание кредитного балла возвращает объект данных, 
      используя фактор BO 
      BOFactory bof =
      (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory"
      );
      DataObject creditRating = bof.create("http://CreditApproval",
      "CreditRating");
      creditRating.setString("customerId",
      creditApp.getString("customerId"));
      
      // создает и вызывает сервис истории кредитования, 
      используя асинхронный ответный вызов шаблона с задержкой.
      
      CreditHistoryAsync cha = (CreditHistoryAsync)
      serviceManager.locateService("CreditHistoryPartner");
      
      Ticket tix = cha.getCreditLimitAsync(creditApp);
      
      CreditAgency creditAgency = (CreditAgency) 
      locateService_CreditAgencyPartner();
      		Integer creditScore = creditAgency.getCreditScore(creditApp);
      
      Double creditLimit = cha.getCreditLimitResponse(tix, Service.WAIT);
      
      creditRating.setInt("creditScore", creditScore.intValue());
      creditRating.setDouble("creditLimit", creditLimit.doubleValue());
      return creditRating;

    3. У вас должно быть несколько ошибок компиляции в Eclipse Editor (предполагается, что у вас включена автоматическая компоновка), так как мы пропустили импорт. Щелкните правой кнопкой в редакторе Java и выберите Источник => Упорядочить Импорт, как показано на рисунке 42.


      Рисунок 42. Упорядочивание импорта
      Рисунок 42. Упорядочивание импорта
    4. Разрешите интерфейс BOFactory на com.ibm.websphere.bo, как показано на рисунке 43.


      Рисунок 43. Разрешение BOFactory
      Рисунок 43. Разрешение BOFactory
    5. Разрешите интерфейс Сервиса на com.ibm.websphere.sca, как показано на рисунке 44.


      Рисунок 44. Разрешение импорта сервиса на com.ibm.websphere.sca
      Рисунок 44. Разрешение импорта сервиса на com.ibm.websphere.sca
    6. Сохраните редактор сборки.


Тестирование решения

Теперь мы готовы протестировать наше решение. Перед интеграцией модулей, каждый модуль должен быть протестирован поэлементно. Мы предположим, что различные команды разработчиков (CreditHistory и CreditAgency) должным образом протестировали свои компоненты.

  1. Добавьте все три модуля к WebSphere Process Server:

    1. В WebSphere Integration Developer перейдите к отображению Серверы, щелкните правой кнопкой WebSphere Process Server и выберите Добавить/Удалить Проект (Рисунок 45).


      Рисунок 45. Добавление и удаление проектов в WebSphere Process Server
      Рисунок 45. Добавление и удаление проектов в WebSphere Process Server
    2. Выберите Добавить Все, чтобы добавить все SCA модули к серверу (Рисунок 46).


      Рисунок 46. Добавление всех модулей
      Рисунок 46. Добавление всех модулей
    3. Нажмите Готово.

  2. Запустите сервер через инструмент компонентного тестирования WebSphere Integration Developer.

    1. Из редактора сборки модулей CreditApproval щелкните правой кнопкой компонентCreditApproval и выберите Протестировать Компонент, как показано на рисунке 47.
      Рисунок 47. Запуск функции Тестирование Комонентов
      Рисунок 47. Запуск функции Тестирование Комонентов
    2. Перейдите к закладке Конфигурации и удалите два эмулятора, как показано на рисунке 48. Эмуляторы позволяют вам имитировать партнера, если он не доступен, но так как у нас есть настоящие компоненты, нам не нужно имитировать их.


      Рисунок 48. Удаление эмуляторов
      Рисунок 48. Удаление эмуляторов
    3. Вернувшись обратно на страницу Событий, введите какие-нибудь входные данные в параметрах предварительного запроса, как показано на рисунке 49, а затем нажмите Продолжить.


      Рисунок 49. Запуск компонентного тестирования
      Рисунок 49. Запуск компонентного тестирования
    4. В диалоге Место Развертывания, выберите WebSphere Process Server v6.0. (Рисунок 50)


      Рисунок 50. Выберите рабочий цикл WebSphere Process Server
      Рисунок 50. Выберите рабочий цикл  WebSphere Process Server
  3. Давайте исследуем процесс и результаты вызова.

    1. Вернитесь в закладку События. Выберите последний Возврат из пути вызова, чтобы увидеть результаты, как показано на рисунке 51.


      Рисунок 51. Выбор Возврата
      Рисунок 51. Выбор Возврата
    2. Вы получите результат, похожий на изображенный на рисунке 52.


      Рисунок 52. Результаты
      Рисунок 52. Результаты
    3. Если вы изучите порядок вызова, вы увидите асинхронный вызов: вместо запрос-ответ-запрос-ответ, мы имеем асинхронный запрос-запрос-ответ-асинхронный ответ. (Рисунок 53)


      Рисунок 53. Путь асинхронного вызова
      Рисунок 53. Путь асинхронного вызова
    4. Закройте редактор тестирования без сохранения и остановите сервер.


Вывод

Импорт и экспорт позволяют нам выставлять наши решения сервис-ориентированном способом. В данной статье мы изучили, как интегрировать решения SCA, используя SCA импорт и экспорт. В Части 4 мы изучим интегрирование с другими решениями с использованием некоторых других связок, таких как Web сервисы и JMS.


Благодарности

Авторы хотели бы поблагодарить Эрика Хернесса за проверку статьи.


Другие статьи в этом цикле



Загрузка

ОписаниеИмяРазмерМетод загрузки
Code sampleSCAArticleSeries3.zip37 KBHTTP

Информация о методах загрузки


Ресурсы

Об авторах

Роланд Барсиа (Roland Barcia) - дипломированный специалист по информационным технологиям для IBM Software Services for WebSphere в районе New York/New Jersey Metro. Он является соавтором IBM WebSphere: Развертывание и дополнительные конфигурации. Чтобы узнать больше о Роланде, посетите его Web сайт.

Джефф Брэнт (Jeff Brent) - инженер-консультант по программному обеспечению для команды Сервис-Ориентированной Архитектуры и технический руководитель для WebSphere Process Server SWAT из West Palm Beach, Флорида. В свободное время он любит проводить время с семьей и играть в баскетбол.

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

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

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


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

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

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


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=WebSphere, SOA и web-сервисы
ArticleID=165507
ArticleTitle=Технический журнал разработчика IBM WebSphere: Построение решений SOA при помощи Компонентной Архитектуры Сервисов - Часть 3
publish-date=02222006
author1-email=barcia@us.ibm.com
author1-email-cc=
author2-email=jeffb@us.ibm.com
author2-email-cc=

Теги

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

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

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

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