Главная » Java, Web, XML » Описание Web-службы

0

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

Средства для такого описания есть во многих языках — это интерфейсы Java, язык          на котором описываются объекты        заголовочные

header-файлы языка С. Для описания Web-служб нужен язык, не зависящий от платформы, операционной системы, системы программирования. Поэтому для точного описания Web-услуг консорциумом W3C создан специальный язык            Этот язык — еще одна реализация       Его спецификация опубликована на странице http://www.w3.org/TR/wsdl.

Корневым элементом документа XML — описания WSDL — служит элемент <definitionsx В этом элементе атрибутом name можно дать имя описанию. Кроме того, это удобное место для введения используемых в описании пространств имен. Описания WSDL активно используют различные пространства имен. Кроме собственных имен WSDL часто использует язык описания схем XSD (см. главу Т) и язык протокола SOAP. Пространство имен WSDL часто описывается как пространство имен по умолчанию, тогда целевое пространство имен получает префикс, обычно tns (Target NameSpace).

В корневой элемент вкладываются пять основных элементов.

•       <types> — определяет сложные типы XSD, используемые Web-службой. Этот элемент не нужен, если служба применяет только простые типы XSD.

•      <message> — описывает каждое SOAP-послание: запрос, ответ, пересылку документов. В этот элемент вкладываются элементы <part>, описывающие имя и тип каждого аргумента запроса или возвращаемого значения.

•       <portType> — описывает Web-службу, называемую здесь пунктом назначения (endpoint) или портом (port) прибытия послания. Она описывается как набор услуг, называемых здесь операциями. Операции описываются вложенными элементами <operation>, описывающими каждую услугу: отправку запроса — получение ответа или, наоборот, получение запроса — отправку ответа. Получение и отправка, в свою очередь, описываются вложенными элементами <input> и <output>, а сообщение об ошибке — элементом

•      <binding> — описывает конкретный формат пересылки: протоколы SOAP, HTTP, тип содержимого HTML, XML или другой MIME-тип послания. У каждой Web-службы может быть несколько таких элементов, по одному для каждого способа пересылки.

•       <service> — указывает местоположение Web-службы как один или несколько портов. Каждый порт описывается вложенным элементом <port>, содержащим адрес Web-службы, заданный по правилам выбранного в элементе <binding> способа пересылки.

Кроме этих пяти основных элементов есть еще два дополнительных элемента.

•      <import> — включает файл с XSD-схемой описания WSDL или другой WSDL-файл.

•      <documentation> — комментарий. Его можно включить в любой элемент описания WSDL.

Можно сказать, что элементы <types>, <message> и <portType> показывают, ЧТО есть в описываемой Web-службе, какие услуги она предоставляет, как организованы услуги, какие типы данных у этих услуг.

Элементы <binding> объясняют, КАК реализована Web-служба, каков протокол передачи посланий: HTTP, SMTP или что-то еще, задает технические характеристики передачи данных.

Наконец, элементы <service> показывают, ГДЕ находится Web-служба, связывая описание <binding> с конкретными адресами Web-службы.

В листинге 2.6 показано, как будет выглядеть WSDL-описание нашей метеослужбы.

Листинг 2.6. Описание WSDL метеослужбы

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="MeteoService"

targetNamespace="http://www.meteo.com/wsdl/MeteoService.wsdl"

xmlns="http://www.w3.org/2 002/07/wsdl"

xmlns:soap="http://www.w3.org/2002/07/wsdl/soapl2"

xmlns:tns="http://www. mi.com/wsdl/MeteoService.wsdl"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<message name="ForecastRequest">

<part name="location" type="xsd: string" />

</message>

<message name="ForecastResponse">

<part name="forecast" type="xsd: string" />

</message>

<portType name="Meteo_PortType">

<operation name="get:WeatherForecast">

<input message="tns :ForecastRequest" /> Coutput message="tns:ForecastResponse" /> </operation>

</portType>

<binding name="Meteo_Binding" type="tns:Meteo_PortType"> <soap:binding style=="rpc"

/>

coperation name="getWeatherForecast">

/>

<input>

<soap:body encodingStyle=

"http://schemas.xmlsoap.org/soap/encoding/"

namespace="urn:MeteoService" use="encoded" />

</input> <output>

<soap:body encodingStyle=

"http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:MeteoService" use="encoded" /> </output> </operation>

</binding>

<service name="Meteo_Service">

<documentation>WSDL File for MeteoService</documentation> <port binding="tns:Meteo_Binding" name="Meteo_Port"> <soap:address

location=="http://www.meteo.com:8080/servlet/MeteoServlet" />

</port> </service> </definitions>

В листинге 2.6 мы дали в элементе <definitions> описанию имя "MeteoService" и определили префиксы всех нужных нам пространств имен. Далее мы описали запрос и ответ в двух элементах <message>. Мы дали ИМ имена "ForecastRequest" И "ForecastResponse". В запросе ОДИН аргумент типа xsd: string. Этот тип определен в языке XSD. Мы дали аргументу имя location, совпадающее с именем аргумента метода getweatherForecast (). Значению, возвращаемому методом, мы дали имя forecast, его ТИП тоже xsd: string.

Имена "ForecastRequest" И "ForecastResponse" ИСПОЛЬЗОВаны В СЛедуЮщем элементе <portType> для указания входных и выходных параметров Web-услуги. В нем один элемент <operation>. Это означает, что Web- служба "Meteo_PortType" предоставляет одну услугу, имя которой

совпадает с именем метода, выполняющего эту услугу. В элементе <operation> указаны входной <input> и выходной <output> параметры услуги.

Затем, элементом <binding> мы указываем один способ пересылки посланий, а именно, как SOAP-посланий в процедурном стиле, пересылаемых по протоколу HTTP, на что указывает элемент <soap:binding style="rcp>"

transport="http://schemas.xmlsoap.org/soap/http" />

Документный стиль SOAP отмечается значением "document" атрибута style.

Далее повторяется описание операции, но уже в терминах SOAP.

Наконец, элементом <service> указываем адрес, по которому расположена Web-служба.

Мы рассмотрим подробно спецификацию WSDL в главе 4, а пока дадим обзор инструментальных средств для создания WSDL-описаний.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии