Главная страница
Навигация по странице:

  • Листинг 4.4. Вложенность дополнительных элементов протокола HTTP

  • Листинг 4.5. Описание WSDL с дополнительными элементами HTTP

  • Листинг 4.6. Вложонность дополнительных . . . . > .... >

  • Листинг 4.6. Описание Web-службы EchoService, сделанное

  • После окончания работы D y n a m i c l n v o k e r на сообщения WSIF и ответ сервера.Пакет JWSDL и его реализация WSDL4J

  • XML-элементы WSDL-ДОКумента

  • WSDL

  • Листинг 4.7. Чтение документа WSDL

  • JWSDL. .

  • ГЛАВА 5 Регистрация Web Services в реестре UDDI

  • UDDI Состав реестра UDDI

  • Листинг 5.1. Основные элементы UDDI-описания бизнес-информации

  • Листинг 5.2. Пример бизнес-информации

  • Элемент

  • Разработка веб-служб средствами Java. Ильдар ХабибуллинРазработкаWebслужбсредствами


    Скачать 9.24 Mb.
    НазваниеИльдар ХабибуллинРазработкаWebслужбсредствами
    АнкорРазработка веб-служб средствами Java.pdf
    Дата03.02.2018
    Размер9.24 Mb.
    Формат файлаpdf
    Имя файлаРазработка веб-служб средствами Java.pdf
    ТипКнига
    #15148
    КатегорияИнформатика. Вычислительная техника
    страница10 из 21
    1   ...   6   7   8   9   10   11   12   13   ...   21
    , вкладываемый непосредственно в элемент , указывает, что это именно протокол HTTP. У него один атрибут verb,
    содержащий указание на применяемый HTTP-метод — строку "GET" или строку "POST".
    Элемент вкладываемый в элемент элемента , своим единственным атрибутом location определяет абсолютный адрес интерфейса Web-службы в форме строки URI.
    Третий элемент , вкладываемый в элемент
    элемента , своим единственным атрибутом location задает отно- сительный адрес URI операции. Вместе с элементом этот адрес образует абсолютный адрес Web-услуги.
    Кроме этих трех элементов, вводятся еще два элемента-пометки
    И
    Эти элементы МОЖНО ПО- местить в элементы и/или для указания способа кодиров- ки строки запроса GET или POST.
    Элемент показывает, что запрос послан в то есть, в строке запроса стоят пары "имя=значение", разделенные амперсендами, пробелы заменены плюсами, а специальные символы записаны за знаком процента в форме.
    Листинг 4.4. показывает вложенность дополнительных элементов HTTP.

    Глава 4. Описание Web Services на языке
    197
    Листинг 4.4. Вложенность дополнительных элементов протокола HTTP
    . . . . >

    verb="GET | POST" />

    адрес
    />

    [?]
    [?]


    [?]
    [?]


    Web-службы — строка URI" />


    Приведем пример. Запрос посылается HTTP-методом GET или POST. На- пример:
    GET
    HTTP/1.1

    198 Разработка Web-служб средствами Java
    Он содержит табельный номер empid сотрудника некоторой фирмы. Web- служба возвращает клиенту информацию о сотруднике в виде документа XML, содержащего сведения вида
    >
    <пате>Иванов П. С.
    27

    Описание этих элементов и всей Web-службы приведено в документе
    WSDL, записанном в листинге 4.5.
    Листинг 4.5. Описание WSDL с дополнительными элементами HTTP
    />
    name="name"
    />
    name="age"
    />

    Глава 4. Описание Web Services на языке
    name="position"
    />


    />




    />


    verb="GET" />

    />


    200 Разработка Web-служб средствами Java

    />



    />
    />

    content
    />


    part="EmpInfo" />




    />

    Глава 4. Описание Web Services на языке
    />


    Дополнительные элементы
    В описании WSDL, приведенном в листинге 4.5 использованы дополни- тельные элементы, описывающие
    Они определены в про- странстве имен с идентификатором
    Будем считать, что этим именам дан префикс mime.
    Существует всего три дополнительных элемента описания МШЕ-типа.
    Элемент содержит только два атрибута. Необязательный атрибут name задает имя этой части послания, а необязательный атрибут type определяет содержимого, например:
    type="text/xml" />
    type="image/jpeg" />
    Отсутствие атрибута type означает "любой тип", то есть, эквивалентно content
    />
    Элемент содержит несколько вложенных элемен- тов , которые описывают каждую часть "multi- part/related" необязательным атрибутом name. Например:
    />

    part="signature" type="image/jpeg"/>

    Разработка Web-служб средствами Java

    Третий элемент описывает являющийся произ- вольным документом XML. Необязательный атрибут part ссылается на часть послания, содержащую схему, в которой описан корневой элемент этого документа.
    Дополнительные элементы с вкладываются в элементы и/или при описании операции элементом , вло- женным в элемент . Структура вложенности показана в листин- ге 4.6.
    Листинг 4.6. Вложонность дополнительных
    . . . . >

    < o p e r a t i o n . . . . >
    < i n p u t . . . . >

    .... >




    Инструменты создания описаний WSDL
    Описания WSDL в листингах 4.2 и 4.5 сделаны вручную. Однако строгая формализация языка WSDL позволяет автоматизировать этот процесс. Мно- гие инструментальные средства создания Web-служб содержат утилиты, ко-

    Глава 4. Описание Web Services на языке WSDL 203
    торые автоматически создают WSDL-файлы, описывающие готовые Web- службы. Например, уже упоминавшееся в главе 3 средство создания Web- служб Apache Axis содержит в своем составе класс Java2wsDL, создающий
    WSDL-файл по классу или интерфейсу Java, описывающему Web-службу.
    Пакет IBM WSTK, в состав которого входит Axis, содержит утилиту создающую и запускающую объект этого класса. Она работает из командной строки. Достаточно набрать в командной строке
    $ java2wsdl EchoService и будет создан файл EchoService.wsdl, содержащий по одному элементу для каждого открытого метода класса, указанного в командной строке. В листинге 4.6 показан этот файл.
    Листинг 4.6. Описание Web-службы EchoService, сделанное
    ?>
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    :

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

    type="xsd:any" />

    204 Разработка Web-служб средствами Java
    name="getEchoRequest">

    />
    name="EchoService">
    name="getEcho"
    name="getEchoRequest" />
    name="getEchoResponse" />
    />
    name="getEcho">
    soapAction="" />
    encodingStyle=

    Глава 4. Описание Web Services на языке
    205
    "http://schemas.xmlsoap.org/soap/encoding/"
    namespace=
    use="encoded" />
    name="getEchoResponse">
    encodingStyle=
    namespace=
    use="encoded" />
    name="EchoServiceService">
    name="EchoService">
    location=
    />

    Интересно, что Axis может выполнить и обратное действие: по имеющемуся
    WSDL-файлу класс wsDL2java создаст все классы Java, необходимые для работы Web-службы. В пакете IBM
    класс можно вызвать из командной строки утилитой
    Например:
    $
    EchoService.wsdl

    206 Разработка Web-служб средствами Java
    Такие же утилиты есть в составе уже упоминавшегося продукта GLUE фир- мы The Mind Electric.
    Пакет Microsoft SOAP Toolkit содержит графическую утилиту вызываемую из стартового меню WSDL Generator, и утилиту командной строки которые создают WSDL-файлы.
    Фирма Sun Microsystems готовит к выпуску пакет интерфейсов JWSDL (Java
    API for WSDL), преобразующих описание WSDL в классы Java и обратно.
    Это позволяет программно создавать, изменять, читать описания WSDL.
    Фирма IBM уже реализовала этот пакет в своем продукте WSTK, назвав на- бор интерфейсов и реализующих их классов WSDL4J (WSDL for Java). Этот набор можно использовать в составе WSTK или отдельно, загрузив его с сайта
    Мы рассмот- рим его подробнее в следующем разделе.
    Самое ценное в описаниях WSDL то, что клиент Web-службы может обра- титься не к ней самой, а к ее WSDL-описанию. В состав GLUE входит ути- лита командной строки invoke, обращающаяся к Web-службе по ее WSDL- описанию. Например, достаточно набрать в командной строке:
    $ invoke
    Эхо и на консоли появится ответ Web-службы.
    Фирма IBM выпускает пакет классов WSIF (Web Services Invocation Frame- work), работающий в Web-контейнере Tomcat под управлением Apache
    SOAP. С помощью этого пакета можно, в частности, сделать ту же работу:
    $
    \
    \
    getEcho Эхо
    Напомним, что обратная наклонная черта здесь означает продолжение ко- мандной строки на следующую строку текста.
    После окончания работы
    D y n a m i c l n v o k e r на
    сообщения WSIF и ответ сервера.
    Пакет JWSDL и его реализация WSDL4J
    Пакет JWSDL состоит из интерфейсов и классов, собранных в пакет и несколько его подпакетов. Они реализованы в пакете com. ibm.
    и его подпакетах, входящих в пакет IBM WSDL4J.
    В пакете javax.wsdi содержатся интерфейсы, описывающие различные
    XML-элементы WSDL-ДОКумента: Definition, Types, Message, PortType,
    Binding, Service, И вложенные В НИХ
    Operation, Part, Input,

    Глава 4. Описание Web Services на языке
    207
    Output, Port, BindingOperation,
    Binding-
    Fault. Методы этих интерфейсов позволяют читать соответствую- щие элементы, а методы setxxx () — записывать их.
    В интерфейсе Definition, кроме того, есть методы createXxxO, создающие объекты этих интерфейсов, например,
    Message
    =
    Методы добавляют созданные объекты к документу WSDL, на- пример:
    Сам же объект типа Definition создается фабричным методом newDefini- tion() класса
    ИЗ
    javax.wsdl. factory:
    Definition def =
    Экземпляр класса WSDLFactory, в свою очередь, создается статическим ме- тодом о , следующим образом:
    WSDLFactory fact =
    Этот метод отыскивает класс-фабрику, сначала просматривая
    СВОЙСТВО
    ПОТОМ
    потом загружает фабрику по умолчанию. Можно загрузить другую фабрику классов, воспользовавшись вторым методом:
    public static WSDLFactory factory);
    Кроме объекта типа Definition, класс-фабрика WSDLFactory создает объек- ты типа читающие описание WSDL, и объекты типа wsDLWriter, записывающие заранее подготовленный документ WSDL. Ин- терфейсы WSDLReader И WSDLWriter содержатся В пакете
    Создание объектов выполняется методами newWSDLReader () и newwsDLWriter () следующим образом:
    WSDLReader reader =
    WSDLWriter writer =
    После создания объекта reader можно определить его свойства методом public void name, boolean value);
    Спецификация WSDL определяет два свойства объекта типа
    • если значение свойства равно true, то объект вы- водит свои сообщения в стандартный вывод out;
    • если свойство равно true, то все импор- тированные документы будут обработаны, если false — то они игнори- руются.

    208 Разработка Web-служб средствами Java
    По умолчанию оба свойства равны true.
    После того как объект reader получен, с помощью его методов можно получить объект типа Definition, заполненный содержимым прочи- танного документа WSDL, например:
    Definition def =
    В листинге 4.7 приведен пример программы, читающей и разбирающей средствами пакета JWSDL файл sample.wsdl, содержащий документ WSDL,
    и выводящий встреченные в нем сообщения и имена в стандартный вывод.
    Листинг 4.7. Чтение документа WSDL
    import javax.wsdl.*;
    import import j public class public static void args){
    try{
    fact =
    reader =
    Definition def =
    Service service =
    new
    "SomeService"));
    Port port =
    Binding binding =
    PortType
    =
    Map messages =

    Глава 4. Описание Web Services на языке WSDL 209
    Iterator
    =
    О
    while
    Message
    =
    if
    }
    List operations =
    Iterator
    =
    while
    Operation operation =
    if
    }
    e){
    Листинг 4.8 показывает процесс создания описания WSDL средствами па- кета JWSDL.
    '. Листинг 4.8. Создание документа WSDL
    import j import j import j public class public static void args)
    try{

    210 Разработка Web-служб средствами Java
    fact =
    writer
    Definition def =
    ;
    Part
    =
    Part part2 =
    Message
    =
    Message msg2 =
    Input input =
    Output output =
    Operation operation =
    PortType portType =
    String tns = "http://some.com/wsdl";
    QName(tns, "SomeService"));
    tns);
    String xsd = "http://www.w3.org/2001/XMLSchema";
    xsd);
    "string"));
    QName(xsd, "float"));
    QName(tns, "getQuoteOutput"));

    Глава 4. Описание Web Services на языке
    211
    ;
    ;
    ;
    "GetQuote"));
    ;
    ;
    e){

    ГЛАВА 5
    Регистрация Web Services
    в реестре UDDI
    В главе 2 мы вкратце рассмотрели порядок регистрации и поиска Web- служб в различных системах поиска и обнаружения информации. Наиболее распространены две системы: универсальная система описания, обнаруже- ния и интеграции UDDI и электронный бизнес-реестр ebXML Registry
    (electronic business XML Registry). Обе системы, особенно ebXML, предна- значены для предоставления информации не только о Web-службах, но и о любом другом бизнесе. Поэтому они хранят информацию не столько об ус- лугах, сколько о фирме, предоставляющей товары и услуги: ее название,
    логотип, устав, контактные телефоны, образцы договоров, прейскуранты и прочую деловую информацию.
    Схема взаимодействия клиента Web-службы с ее поставщиком через реестр показана на рис 2.3.
    Система описания, обнаружения и интеграции UDDI создана фирмами IBM
    и Microsoft (http://uddi.microsoft.com/).
    Сейчас она развивается группой крупных компаний, среди которых активное участие принимают, кроме IBM и Microsot, компании Oracle, Hewlett-Packard и
    SAP
    На официальном сайте сообщества UDDI http://www.uddi.org/ приве- ден список около трехсот компаний-участников проекта. Сообщество выпус- тило несколько спецификаций, описывающих требования к UDDI, которые можно получить на том же сайте. Спецификации уже реализованы множеством продуктов разработки реестра UDDI.
    Реестр UDDI (UDDI Business Registry) состоит из множества узлов (nodes),
    размещенных в Интернете. Они хранят информацию о Web-службах, дос- тупную на всех узлах, образующих распределенный
    Клиент "видит" UDDI-реестр как единое целое, совершенно не ощущая того, что он размещен на нескольких машинах. Конечно, сами узлы можно организовать

    Глава 5. Регистрация Web Services в реестре
    213
    как Web-службы, а реестр UDDI — как слабо связанное распределенное приложение.
    Многие крупные компании организовали и содержат свои
    Наибольшей известностью пользуются следующие реестры:
    • реестр фирмы IBM, расположенный по адресу
    реестр компании Hewlett Packard, его адрес реестр корпорации Microsoft находится на сайте
    • реестр фирмы SAP AG расположен по адресу
    Эти UDDI-реестры связаны между собой и постоянно обмениваются информацией. Кроме это открытые (public) реестры. Любой же- лающий может зарегистрировать в них свою Web-службу или отыскать нужную Web-услугу. Фирмы могут организовать и закрытые частные
    (private) реестры, доступные только зарегистрированным участникам.
    Список можно посмотреть на сайте проекта UDDI
    Состав реестра UDDI
    Реестр UDDI разбивает хранящуюся в нем информацию на несколько групп.
    Четыре основные группы состоят из следующих отдельных документов или частей одного документа.
    • Бизнес-информация — документ с корневым элементом
    — описание фирмы-поставщика Web-услуг: ее ключ
    (Unique
    Universal Identifier), уникальный в пределах реестра и описанный ат- рибутом businessKey, название фирмы — вложенный элемент ,
    краткое описание сферы ее деятельности, типы предоставляемых услуг, контактная информация, ссылки URL. Эта информа- ция предназначена для всех, кто хочет воспользоваться услугами фирмы.
    • Бизнес-услуги — элемент , вложенный в элемент
    - список услуг, оказываемых фирмой. Каждая услуга описывается вложенным элементом . В описание вхо- дит КЛЮЧ UUID КаЖДОЙ УСЛУГИ, ОПИСаННЫЙ атрибутом serviceKey,
    услуги — вложенный элемент ее краткое описание и ссылки на

    214 Разработка Web-служб средствами Java
    на подробную информацию. Услуги могут быть любыми, не обязательно
    Web-услугами.
    • Указатели на услуги — элемент вложенный в эле- мент — способы получения каждой услуги. Они мо- гут быть прямыми, например, URL-адрес Web-службы, или косвенными,
    например, описание WSDL или IDL. Каждый способ получения услуги описывается одним вложенным элементом
    Его ат- рибут bindingKey определяет уникальный ключ UUID указателя. Эле- мент содержит ссылку на соответствующий элемент
    .
    • Модель услуги — элемент
    (technical Model) — подробное фор- мальное описание каждой услуги. Оно используется программным обес- печением узла. Обычно это отдельный документ XML.
    В реестре есть еще несколько дополнительных элементов.
    • Утверждение — элемент
    — описание установ- ленных ранее отношений между фирмами (утверждение "peer-peer")
    или фирмой и ее подразделениями (утверждение "parent-child"). Фирма
    утверждает, что она тесно связана с перечисляемыми фирмами или что это — ее подразделения. Третий вид утверждения — "identity" —
    отношение между одинаковыми фирмами — это фактически псевдо- ним. Описание утверждения выполняется вложенными элементами
    и , а вид отношения описывается вложенным эле- ментом
    Отношение входит в силу, когда его утвер- дят оба участника. Это отдельный документ, использующий элементы
    обеих фирм.
    • Информация — элемент
    — дата создания и послед- ней модификации записи в реестре, идентификатор узла реестра, иден- тификатор владельца информации.
    Подписка — элемент
    — список фирм и сведений, кото- рые надо послать перечисленным фирмам при каких-либо изменениях в деятельности фирмы.
    Эти элементы определены в пространстве имен UDDI. Идентификатор про- странства имен UDDI версии 3.0 равен "urn:uddi-org:api_v3".
    Уникальный ключ UUID, встречающийся в этих элементах, имеет пример- но такой вид: "uddi:example.com: 1" или "uddi:example.com:sales-division:53".
    Устаревшая форма записи UUID выглядит примерно так: "4CD7E4BC-
    648B-426D-9936-443EAAC8AE23".
    В листинге 5.1 приведена схема документа XML, хранящегося в UDDI- реестре и описывающего бизнес-информацию. В этой схеме показаны не все, а только основные элементы первого уровня вложенности. В листин- ге 5.1 использованы те же пометки, что и в главе 4:

    Глава 5. Регистрация Web Services в реестре UDDI 215
    • символ [?] означает, что элемент или атрибут может появиться в доку- менте нуль или один раз;
    • символ [*] означает, что элемент может появиться нуль или несколько раз;
    • символ [+] означает, что элемент может появиться один или несколь- ко раз;
    • отсутствие символа в квадратных скобках означает, что атрибут должен появиться ровно один раз.
    | Листинг 5.1. Основные элементы UDDI-описания бизнес-информации
    [?] >
    [?]
    [+]
    [?]
    UUID" [?] > [+]
    [?]
    UUID" [?] > [+]





    Рассмотрим подробнее каждый элемент. У элементов и нет атрибутов, они содержат только один или несколь- ко вложенных элементов
    ИЛИ
    ветственно.
    Структура остальных элементов сложнее. Мы рассмотрим их в следующих разделах.

    216 Разработка Web-служб средствами Java
    Элемент
    У элемента есть один необязательный атрибут уже показанный в листинге 5.1. Этот атрибут определяет уникальный ключ UUID бизнес-информации. Если он отсутствует, то ключ генерируется реестром UDDI.
    В элемент вкладывается восемь элементов, из них обяза- телен только один элемент
    Ниже перечислены эти элементы.
    • Элемент содержит один или несколько вложенных эле- ментов содержащих ссылки на файлы, в которых расположено описание бизнес-информации.
    Элементы которые могут встретиться несколько раз, содержат названия фирмы в полном и сокращенном виде на разных языках.
    • Элемент содержащий произвольное описание бизнес- информации, тоже может встретиться несколько раз, например, на раз- ных языках.
    • Элемент содержит один или несколько вложенных элемен- тов , содержащих, в свою очередь, несколько вложенных эле- ментов, описывающих контактную информацию:
    • нуль или несколько элементов с произвольным описа- нием контактной информации на разных языках;
    • один или несколько элементов с именами или должно- стями партнеров;
    • нуль или несколько элементов с номерами контактных теле- фонов;
    • нуль или несколько элементов с адресами электронной почты;
    • нуль или несколько элементов
    , содержащих почтовые ад- реса фирмы.
    • Уже ОПИСанНЫЙ Элемент
    • Элемент содержит идентификаторы бизнес- информации в различных системах идентификации или классификации.
    Они записываются в атрибутах одного или нескольких вложенных эле- ментов . У этих элементов два обязательных атрибута:
    содержащий ключ элемента описывающего систему идентификации, и со значением идентификатора. Не- обязательный атрибут keyName содержит произвольное краткое имя идентификатора. Это имя должно быть уникальным в пределах данной

    Глава 5. Регистрация Web Services в реестре
    217
    системы идентификации. Таким образом, значение атрибута работает аналогично идентификатору пространства имен, обеспечивая уникальность имени.
    • Элемент тоже содержит один или несколько элементов описывающих некоторые категории бизнеса, напри- мер, его разделение по географическим районам. Он может содержать
    НУЛЬ ИЛИ НеСКОЛЬКО
    С атрибутом tModeiKey И ВЛОЖеННЫМИ
    . В ОДНу Группу собирается неделимая информация, например, долгота и широта геогра- фического пункта. В отличие от элемента , элемент
    относит имена не к определенной системе иден- тификации, а к некоторой категории, например, виду продукции, опре- деляемому атрибутом tModeiKey.
    Бизнес-информация может быть подписана цифровыми подписями, рас- положенными В элементах .
    Как видите, элемент содержит обширную и всесторон- нюю информацию о зарегистрированной в реестре UDDI фирме. В листин- ге 5.2 приведен пример такой информации.
    Листинг 5.2. Пример бизнес-информации
    620-be39-6631bb74b6el">
    useType="businessEntity">
    620-be39-6631bb74b6el
    Service
    Интерактивная метеослужба предоставляет прогноз погоды

    218 Разработка Web-служб средствами Java
    на завтра в указанном населенном



    Контактная информация метеослужбы.

    И. П.
    234-45-67
    318123 Жилки, Ягодная, 23-6






    />



    Глава 5. Регистрация Web
    в реестре
    219
    />
    />


    Элемент
    У элемента , описывающего отдельную бизнес-услугу,
    два необязательных атрибута serviceKey И
    Атрибут serviceKey содержит уникальный ключ UUID описываемой услу- ги. Если он отсутствует, то ключ будет сгенерирован реестром UDDI.
    Атрибут businessKey содержит ключ UUID соответствующего элемента
    . Его МОЖНО не писать, если элемент
    ЯВНО ВЛОЖеН В
    < b u s i n e s s E n t i t y > .
    В элемент можно вложить пять необязательных элемен- тов. Это имя, записанное в элементе , описание, сделанное в элемен- те , уже описанный элемент
    И уже зна-
    КОМЫе нам
    И .
    В листинге 5.3 приведен пример описания бизнес-услуги.
    Листинг 5.3. Пример описания бизнес-услуги
    serviceKey="d8091de4-0a4a-4061-9979-5dl9131aece5"
    businessKey="677cfala-2717-4620-be39-6631bb74b6el">
    Service

    Прогноз погоды на завтра.


    Разработка Web-служб средствами Java
    Элемент
    В открывающем теге элемента описывающего сетевой адрес и другие способы получения услуги, два необязательных атрибута bindingKey И serviceKey.
    Атрибут bindingKey содержит уникальный ключ UUID элемента. Если этот атрибут отсутствует, то его значение генерируется реестром UDDI.
    Атрибут serviceKey содержит КЛЮЧ UUID элемента , В
    котором он содержится.
    В элемент вкладывается нуль или несколько описаний
    на разных языках и ровно один обязательный элемент
    , содержащий адрес описываемой Web-службы, обычно в ви- де строки URL или электронной почты. В прежних версиях UDDI вместо него использовался элемент
    1   ...   6   7   8   9   10   11   12   13   ...   21


    написать администратору сайта