Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распределенные сервис-ориентированные системы..pdf
Скачиваний:
16
Добавлен:
05.02.2023
Размер:
9.2 Mб
Скачать

Определение связывания....

</binding>

<service>

Определение сервиса....

</service> </definitions>

Кратко перечислим назначение основных элементов и атрибутов языка WSDL, заданных в виде следующих тегов:

<definitions> — корневой элемент WSDL, определяющий глобальные описания пространств имен, которые видны на протяжении всего документа.

<types> — пределяет типы данных, которые будут использованы в сообщениях.

<message> — определяет формат данных, которые передаются между потребителем Web-службы и самой Web-службой. Они также разделены на запросы и ответы.

<portType> — определяет операции Web-служб (методы), причем каждая операция ссылается на входное и выходное сообщение.

<binding> — описывает конкретный протокол SOAP и форматы данных для операций и сообщений, определенных для конкретного типа порта.

<service> — содержит коллекцию элементов <port>, где каждый порт связан с конечной точкой (сетевым адресом или URL).

<port> — указывает адрес для связывания, таким образом, определяя конечную точку коммуникации.

В целом, WSDL описывает абстрактный интерфейс веб-службы.

5.1.3 Краткое описание протокола SOAP

SOAP предоставляет конкретную реализацию взаимодействия потребителей и поставщиков сервиса, определяя XML-сообщения, которыми обмениваются потребитель и поставщик.

SOAP предназначен для обеспечения независимого, абстрактного протокола связи, который обладает возможностью подключения распределенных Web-служб.

На листинге 5.2 представлен шаблон общей структуры SOAP-сообщения или структура конверта SOAP.

206

Листинг 5.2 — Шаблон общей структуры SOAP-сообщения

<?xml version = "1.0" encoding="utf-8"?> <soap:Envelope

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/

...">

<soap:Header>

...

...

</soap:Header>

<soap:Body>

...

...

<soap:Fault>

...

...

</soap:Fault>

...

</soap:Body>

</soap:Envelope>

В структуре сообщений SOAP четко выделяются четыре элемента: Envelope — обязательный корневой элемент, определяющий сообщение и

пространство имен, использованное в документе.

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

Body — основной обязательный элемент, содержащий сообщение, которым обмениваются приложения.

Fault — необязательный элемент, используемый для предоставления информации об ошибках, произошедших при обработке сообщений.

5.1.4 Необязательный реестр Web-служб — UDDI

Необязательный реестр Web-служб — UDDI призван завершить инфраструктуру технологии Web-сервисов, построенных на протоколе SOAP.

Основная задача UDDI — регистрировать и публиковать для общего использования интерфейсы поставщиков Web-сервисов. После того как потребители сервисов выбрали нужного поставщика, они напрямую взаимодействуют друг с другом по протоколу SOAP.

Нетрудно заметить, что эта идея тесно коррелирует с идеей брокеров, входящих в инфраструктуру объектного подхода CORBA, используемого в распре-

207

деленных системах. Тем не менее, несмотря на значительные усилия основных «идеологов» сервисных Web-технологий, к которым относятся корпорации IBM, Microsoft и SAP, использование UDDI не получило широкого распространения. В январе 2006 года ряд компаний объявили о закрытии своих общедоступных реестров UDDI. А в конце 2007 года, рабочая группа по UDDI в OASIS объявила о закрытии своего технического комитета.

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

5.1.5 Программные пакеты Java EE, обслуживающие SOAP

Глобальный консорциум OASIS (Organization for the Advancement of Structured Information Standards) хранит множество официальных спецификаций, относящихся к технологии

Web-сервисов (Web-служб). Все они опубликованы под общим префиксом WS-*.

Вязыке Java разработка и утверждение всех спецификаций проходит под контролем процесса JCP (Java Community Process) — сформированного в 1998 году. JCP выпускает спецификации JSR под разными номерами, включая те, которые относятся к Web-сервисам.

Внастоящее время, основу технологии Web-сервисов представляют спецификации:

а) JAX-WS 2.2a — спецификация JSR 224;

б) Web Services 1.3 — спецификация JSR 109;

в) Web Services Metadata 2.3 — спецификация JSR 181; г) JAXB 2.2 — спецификация JSR 222.

Технологию JAXB мы рассмотрели в предыдущей главе, а технология Web Services 1.3 определяет модель программирования и поведение программного обеспечения во время выполнения Web-служб в контейнере Java EE и упаковку артефактов для обеспечения переносимости Web-служб на разные реализации серверов.

Технология JAX-WS 2.2a определяет набор API и основные аннотации, позволяющие создавать и использовать Web-службы в Java. Ее пакеты представлены в таблице 5.1. В них определяются API для различных обработчиков сообщений, поэтому, ни потребитель сервиса, ни Web-служба не должны сами генерировать или анализировать SOAP-сообщения. Этой низкоуровневой обработкой занимается программное обеспечение JAX-WS. В частности, JAX-WS интенсивно использует технологию JAXB, «скрывая» от участников взаимодействия все детали достаточно сложных преобразований.

208

Таблица 5.1 — Основные пакеты технологии JAX-WS 2.2a [17]

Пакет

Описание пакета

javax.xml.ws

В этом пакете содержатся основные API JAX-WS.

javax.xml.ws.http

Определяет API, характерные для связывания XML/HTTP.

javax.xml.ws.soap

Определяет API, характерные для связывания SOAP 1.1/HTTP

 

или SOAP 1.2/HTTP.

javax.xml.ws.handler

В этом пакете определяются API для обработчиков сообщений.

Технолгия WS-Metadata 2.3 предоставляет аннотации, помогающие определять и развертывать Web-службы. Основная цель WS-Metadata — упростить развитие Web-служб, обеспечивая правильное и надежное отображение используемых объектов между описаниями WSDL и интерфейсами Java. Основные пакеты этой технологии представлены в таблице 5.2.

Таблица 5.2 — Основные пакеты технологии WS-Metadata 2.3 [17]

Пакет

Описание пакета

javax.jws

Содержит аннотации для перехода от Java к WSDL и обратно.

javax.jws.soap

API, предназначенные для преобразования Web-служб к протоколу

 

передачи сообщений SOAP.

Часто, все перечисленные выше технологи, неофициально обозначают как JWS (Java Web Services) или просто — Web-службы Java. Некоторые из этих технологий были перенесены на уровень Standard Edition и влючены в Runtimeсистему языка Java. Другие, такие как JAX-RPC (JSR 101), на основе которых создавались технологии протокола XML-RPC, были удалены из платформы Java EE по причине их излишней громоздкости и сложности. Тоже самое произошло и с технологией JAXR (Java API for XML Registers), обслуживавшей доступ к службе реестров UDDI и удалена по причине их бесперспективности.

Особо следует отметить набор утилит, присутствующий в Runtime-систе- ме языка Java. Так, в каталоге /usr/lib/jvm/default-runtime/bin учебного дистрибутива ОС УПК АСУ, вы найдете утилиты:

а) wsgen — читает класс реализации Web-сервиса (SEI, Service Endpoint Implementation) и создает все необходимые артефакты для развертывания Web-сервиса и его вызова;

б) wsinport — генерирует на основе описания WSDL необходимые артефакты технологии JAX-WS, которые затем могут быть запакованы в WARархив и размещены на сервере приложений.

Дальнейшее изучение технологии Web-сервисов необходимо привязывать к конкретным примерам.

209