IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  SOA и Web-сервисы  >

Начинаем работать с WebSphere ESB: создадим и опубликуем компонент POJO как сервис

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить

Исходные тексты примера


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: простой

Васудеван Тьягараджан, инженер системотехник, IBM India Pvt. Ltd.

03.08.2007

Научитесь разрабатывать сервисные компоненты из компонентов "простой объект Java" Plain Old Java™ Object (POJO) и опубликуйте их в IBM® WebSphere® Enterprise Service Bus. Определите интерфейс на языке определения Web-сервисов WSDL (Web Services Description Language), реализуйте его в Java™и узнайте, как ассоциировать сервисный компонент с автономной ссылкой и использовать автономную ссылку для доступа к сервису в рамках ESB.

Необходимые условия

Данная статья предполагает, что в вашей системе установлены программные продукты IBM WebSphere ESB 6.0 и IBM WebSphere Integration Developer 6.0.

Введение в WebSphere Enterprise Service Bus

WebSphere Enterprise Service Bus - это платформа, которая делает возможной гибкую интеграцию приложений и помогает предприятиям решать задачи сервис-ориентированной архитектуры SOA (Service-Oriented Architecture). ESB позволяет потребителям и производителям сервисов взаимодействовать друг с другом без установления прямой взаимозависимости. В терминах ESB приложение, запрашивающее сервис у других приложений, называется "потребителем сервиса", а приложение, предоставляющее этот сервис, называется "поставщиком сервиса". ESB разделяет потребителей и поставщиков сервиса, причем важно отметить, что можно изменить определение интерфейса любой из этих двух сторон, не затрагивая другой.

WebSphere Enterprise Service Bus может решать следующие основные задачи, способствующие отделению поставщика сервиса от потребителя сервиса:

  1. Маршрутизация запросов и ответов: Передача данных между поставщиком сервиса и потребителем сервиса осуществляется исключительно в форме сообщений. Потребитель сервиса запрашивает сервис и создает для ESB сообщение, содержащее запрос. Платформа ESB служит транспортным средством между поставщиком и потребителем. ESB идентифицирует реального поставщика сервиса и передает ему этот запрос. Завершив операцию, поставщик сервиса формирует ответ в форме сообщения и передает его обратно ESB. ESB передает ответ реальному потребителю. На протяжении всего процесса обмена данными ни поставщик, ни потребитель не знают о существовании друг друга. Информация, необходимая для маршрутизации сообщений с запросами и ответами, известна только ESB;
  2. Трансформация и конвертация сообщений:ESB позволяет и поставщику, и потребителю использовать собственные протоколы и форматы сообщений. От них не требуется соблюдение одинаковых форматов сообщений и протоколов -- ESB берет на себя обработку различных протоколов и форматов сообщений. Платформа умеет трансформировать одни форматы сообщений в другие и конвертировать сообщения одного протокола в другой.

На следующей схеме показана роль ESB:


Рисунок 1. Принципиальная схема ESB
Принципиальная схема ESB

Создание интерфейса на языке WSDL

Давайте начнем с примера сервисного компонента, который будет переводить градусы Цельсия в градусы Фаренгейта. Компонент Temperature Converter (Конвертер температур) имеет метод с именем convert, который принимает на входе данную температуру в градусах Цельсия и возвращает на выходе соответствующую ей температуру в градусах Фаренгейта. Для тестирования мы воспользуемся клиентской страницей JavaServer Pages (JSP), которая будет обращаться к сервисному компоненту через автономную ссылку.

Все сервисные компоненты, публикуемые в WebSphere ESB, должны иметь хорошо определенный интерфейс. Мы можем создать для описанного выше компонента интерфейс TemperatureConverterInterface в программе WebSphere Integration Developer, как показано на следующем рисунке:


Рисунок 2. Создание интерфейса на WSDL с помощью мастера создания интерфейсов New Java Interface Wizard
Создание интерфейса на WSDL с помощью мастера создания интерфейсов New Interface Wizard

Добавим к интерфейсу операции request и response с одним входом и одним выходом, как показано ниже. Показанная на рисунке операция с именем convert имеет один вход Celsius as double и один выход Fahrenheit as double.


Рисунок 3. Добавление операций к интерфейсу
Добавление операций к интерфейсу


Разработка сервисного компонента по схеме POJO на основе модели WSDL в редакторе Assembly Editor

Далее мы создадим реализацию POJO (Java Plain Old Java Object) для упомянутого выше интерфейса. Мы можем создать эту реализацию (сервисный компонент) на Java с помощью редактора сборок Assembly Editor, как показано на следующем рисунке. Редактор сборок Assembly Editor, компонент программы WebSphere Integration Developer, позволяет разработчику соединить компоненты SCA при помощи интерфейсов (импорта и экспорта) и привязок. Давайте назовем нашу реализацию "TemperatureConverterImpl.java."


Рисунок 4. Создание сервисного компонента с помощью Assembly Editor
Создание сервисного компонента с помощью Assembly Editor

Затем нам нужно связать интерфейс TemperatureConverterInterface с этим компонентом с помощью команды "Add Interface".


Рисунок 5. Связывание интерфейса с формируемым сервисным компонентом
Связывание интерфейса с формируемым сервисным компонентом

Теперь интерфейс связан с компонентом. Мы можем сгенерировать скелет реализации с помощью команды "Generate Implementation".


Рисунок 6. Создание реализации нового сервисного компонента
Создание реализации нового сервисного компонента

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

Нам нужно предусмотреть в определенном выше классе реализацию метода convert, как показано в следующем листинге:


Листинг 1. Реализация метода convert
                
public Double convert(Double celsius) {
	double dCelsius = celsius.doubleValue();
	double fahr;
	fahr = (((0.9/0.5) * dCelsius) + 32);
	return new Double(fahr);
}		

Связывание сервисного компонента с автономной ссылкой

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


Рисунок 8. Создание автономной ссылки
Создание автономной ссылки

Связать интерфейс TemperatureConverterInterface.wsdl с автономной ссылкой можно при помощи кнопки "Add Reference". По умолчанию автономной ссылке будет присвоено имя TemperatureConverterInterfacePartner.


Рисунок 7. Подключение автономной ссылки к сервисному компоненту
Подключение автономной ссылки к сервисному компоненту

Создание клиента и обращение к сервису через автономную ссылку

Затем, чтобы протестировать наш сервисный компонент, необходимо разработать клиентскую страницу JSP. На этой странице JSP пользователь может ввести значение температуры в градусах Цельсия. В свою очередь, страница JSP передает значение сервису для конвертации в значение по шкале Фаренгейта, и, в конце-концов, отображает результат.


Рисунок 10. Шаблон нового файла JSP
Шаблон нового файла JSP

Вызов нашего компонента будет осуществляться через JSP с помощью класса ServiceManager, как показано в следующем листинге.


Листинг 2. Реализация страницы JSP
                
String cel = request.getParameter("celcius");
if(cel != null && cel.length() > 0){
try{
  ServiceManager serviceManager = new ServiceManager();
  Service service = (Service) serviceManager.locateService
  ("TemperatureConverterInterfacePartner");
  Double celDouble = Double.valueOf(cel);
  DataObject respObject = (DataObject) service.invoke("convert", celDouble);
  if(respObject!= null){
	  out.println(respObject.getDouble("Fahrenheit"));
  }
    }catch(Exception e){
    //handele it			
  }
}

Упаковка и размещение приложения в WebSphere ESB

Теперь компонент и клиент можно скомпоновать и разместить в WebSphere ESB для тестирования. Экспортируйте приложение как модуль интеграции Integration Module EAR, как показано на следующем рисунке.


Рисунок 11. Экспорт проекта как модуля интеграции
Экспорт проекта как модуля интеграции

Рисунок 12. Экспорт модуля интеграции
Экспорт модуля интеграции

Выполните размещение файла EAR в WebSphere ESB через консоль администрирования Admin Console и перейдите к "URL" в окне браузера.


Рисунок 13. Окончательный вывод
Окончательный вывод

Заключение

Теперь вы знаете, как создать сервисный компонент по принципу "снизу вверх" (от интерфейса к реализации) и разместить его на платформе IBM WebSphere ESB. Кроме того, вы научились обращаться к сервисному компоненту из клиентского приложения через автономную ссылку.




В начало


Загрузка

ОписаниеИмяРазмерМетод загрузки
Source codeTemp-Conv-Module.ear16KBHTTP
Информация о методах загрузки


Ресурсы



Об авторе

Васудеван Тьягараджан (Vasudevan Thiyagarajan) работает в качестве инженера-системотехника в филиале IBM в г. Бангалор, Индия. Он занимается разработкой продуктов обеспечения передачи данных семейства IBM WebSpere. Васудеван имеет ученую степень магистра в области прикладных вычислительных систем. В сферу его интересов входят технологии распределенных вычислений и промежуточного программного обеспечения.




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



ДаНетНе знаю
 


 


12345
 


В начало


IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.

    IBM в России Конфиденциальность Контакты