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

  • Размещение Web-служб на

  • http://www

  • Реализация порта

  • Конфигурационный файл Web-службы

  • Листинг 7.8. Структура конфигурационного файла Web-службы

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


    Скачать 9.24 Mb.
    НазваниеИльдар ХабибуллинРазработкаWebслужбсредствами
    АнкорРазработка веб-служб средствами Java.pdf
    Дата03.02.2018
    Размер9.24 Mb.
    Формат файлаpdf
    Имя файлаРазработка веб-служб средствами Java.pdf
    ТипКнига
    #15148
    КатегорияИнформатика. Вычислительная техника
    страница16 из 21
    1   ...   13   14   15   16   17   18   19   20   21
    HelloHome
    Hello

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



    Bean









    Глава 7. Web Services как часть J2EE 319
    HelloEJB
    />
    >


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



    />

    HelloEJB
    Home


    HelloEJB
    Remote
    remove



    create
    />


    Remote

    Глава 7. Web Services как часть J2EE
    321




    Размещение Web-служб на
    У Web-службы, работающей в составе J2EE-cepBepa, есть возможность ис- пользовать компоненты EJB. Реализовать эту возможность можно самыми разными способами. Можно отвести компонентам роль только вспомо- гательных классов, разгружающих сервлеты и страницы JSP. Схема такой реализации показана на рис. 7.1.
    Адресат
    Web-службы или страница JSP
    Рис 7 . 1 . Компоненты EJB в составе Web-службы
    Другой способ использования компонентов EJB — реализовать ими саму
    Web-службу, отказавшись от сервлетов, как показано на рис. 7.2.
    Между этими двумя крайними схемами лежит множество промежуточных решений, использующих компоненты EJB в качестве адресата Web-службы наряду с сервлетами и страницами JSP.
    Зак. 748

    322
    Разработка Web-служб средствами Java
    EJB-контейнер
    Адресат (Endpoint)
    Web-службы
    Entity данных
    Рис 7.2. Реализация Web-службы компонентами EJB
    Реализуя Web-службу на по той или иной схеме, следует пом- нить о возможности ее переноса на другой сервер. Ценность созданной ва- ми Web-службы резко возрастет, если она, будучи упакована в EAR-архив,
    установится на любом J2EE-cepBepe без всяких изменений. Кроме того,
    следует обеспечить одинаковый доступ клиентам, независимый от способа реализации Web-службы на
    Для того чтобы обеспечить выполнение этих двух условий, группой ве- дущих компаний под патронажем фирмы IBM разработана специфика- ция "Web Services for J2EE". Она доступна по адресу http://www-
    Мы будем называть ее сокра- щенно спецификацией "WS4EE".
    Спецификация WS4EE предлагает свою обобщенную схему реализации
    Web-службы на основанную на средствах пакета JAX-RPC.
    Эта схема показана на рис. 7.3. По этой схеме Web-служба помещается в контейнер, которым может служить Web- или EJB-контейнер. Контейнер создает и регистрирует в системе именования JNDI объект, реализующий интерфейс из пакета JAX-RPC. Этот объект содержит адрес Web- службы и служит фабрикой классов, реализующих
    Web- службы. Клиент находит его средствами JNDI, создает с его помощью объ- ект SEI-интерфейса и через него получает Web-услуги.
    Такая схема дает одинаковый доступ к Web-службам, построенным самыми разными сочетаниями сервлетов, страниц JSP и компонентов EJB.
    Саму Web-службу, называемую в спецификации WS4EE портом (port),
    предлагается реализовать либо классом-служителем (tie) системы JAX-
    RPC, следовательно, с помощью сервлета либо session- компонентом без сохранения состояния. В первом случае Web-служба будет работать под управлением Web-контейнера, во втором — под управлением EJB-контейнера.

    Глава 7. Web Services как часть J2EE
    323
    Клиент
    Контейнер (Web или EJB)
    Интерфейс
    Service
    Web-служба
    (Порт)
    Рис. 7 . 3 . Схема, предлагаемая спецификацией "WS for J2EE"
    Название "порт" идет от описания WSDL (см. главу 4). Порт включает в се- бя и соответствующий WSDL-элементу и
    класс-служитель, чьи методы описаны элементом и вспо- могательные классы.
    У каждого порта есть свой адрес но два порта с разными адресами мо- гут разделять одни и те же классы Web-службы. Адрес порта хранится в объекте-фабрике типа service, который прямо соответствует элементу
    . Такое соответствие не случайно. Спецификация WS4EE
    исходит из описания и строит Web-службу как воплощение такого описания.
    Реализация порта
    Поскольку описание WSDL ничего не говорит о способах реализации пор- та, спецификация WS4EE предлагает для этого две модели.
    • Модель системы JAX-RPC, описанная в главе 6. Она основана на SEI- интерфейсах, классах-служителях и сервлетах и работает в Web- контейнере.
    • Модель компонентов EJB, основанная на session-компонентах без сохра- нения состояния, предоставляющих
    Она работает в
    EJB-контейнере.
    Спецификация WS4EE ничего не говорит о других моделях, например, мо- дели, основанной на службе сообщений, системе JAXM и MDB- компонентах. Однако она не ограничивает реализацию Web-службы указан- ными в ней двумя моделями. Разработчик может выбрать и другую модель.
    Обе модели, описанные в спецификации WS4EE, предполагают наличие в составе порта двух обязательных компонентов.
    • Первый компонент — это интерфейс, предоставляемый клиенту, кото- рый спецификация называет так же как в системе JAX-

    324 Разработка Web-служб средствами Java
    RPC. Этот интерфейс реализует WSDL-описания порта, сделанные эле- ментами
    И
    • Второй компонент — это класс, воплощающий методы
    Его адрес указан элементом
    WSDL-описания. Он может быть классом-служителем системы JAX-RPC, session-компонентом или каким-то другим классом. Спецификация WS4EE называет этот класс "Service Implementation Bean". Мы будем называть его порт-компонентом.
    Этот класс обязан реализовать все методы SEI-интерфейса, хотя не обя- зан реализовать сам
    У каждого порта есть свой адрес указанный в элементе
    Несколько портов с разными адресами могут разделять один порт- компонент, но они считаются разными портами Web-службы.
    Поскольку WSDL-файла недостаточно для точного описания реализации порта, а конфигурационные файлы Web-приложения web.xml и EJB- приложения описывают только отдельные сервлеты и отдельные компоненты EJB, необходим дополнительный конфигурационный файл порта. Спецификация WS4EE предлагает написать целых три конфигураци- онных файла.
    • Первый файл с именем webservices.xml описывает Web-службу.
    • Второй файл с именем webservicesclient.xml содержит ссылки на другие
    Web-службы. Он предназначен клиенту Web-службы.
    • Третий файл, имя которого не фиксировано, описывает соответствие типов Java и по правилам системы JAX-RPC. Будем называть его условно
    Рассмотрим подробнее каждый из трех конфигурационных файлов.
    Конфигурационный файл Web-службы
    Для каждого Web- или EJB-контейнера записывается один конфигурацион- ный файл, описывающий все Web-службы, установленные в этом контейне- ре. Это XML-файл webservices.xml с корневым элементом . В
    Web-контейнере этот файл хранится вместе с файлом web.xml в каталоге в EJB-контейнере — вместе с файлом ear-jar.xml в каталоге
    В корневой элемент вкладывается один или несколько эле- ментов , описывающих каждую Web-службу. При описании в элементе обязательно задается имя Web-службы, применяемое внутри описания, в элементе
    — записывается полный путь к WSDL-файлу, начинающийся от корневого

    Глава 7. Web Services как часть J2EE 325
    каталога Web- или
    Элементом указы- вается полный путь к JAX-RPC-файлу.
    Один или несколько элементов вложенных в элемент описывают каждый порт-компонент Web- службы. При описании порт-компоненту дается имя в элементе
    Оно не связано с именем порта в WSDL-файле, и должно быть уникально в пределах модуля. В элементе двумя вложен- ными элементами и
    записывается префикс и имя
    XML-элемента, описывающего порт в WSDL-файле. Элемент
    показывает полное имя а
    элемент
    — полное имя порт-компонента.
    Имя порт-компонента указывается в одном из двух элементов, вложенных в элемент
    Имя сервлета записывается во вложенном элементе
    Оно должно соответствовать имени, записанном в элементе файла
    Имя session-компонента запи- сывается во вложенном элементе и должно соответствовать ло- гическому имени компонента, записанному в элементе файла
    Кроме этого, в необязательных элементах следует описать клас- сы-обработчики системы JAX-RPC, если они есть в составе Web-службы,
    указав при этом их логическое имя, полное имя класса, начальные парамет- ры и блоки заголовка SOAP-послания, которые они обрабатывают.
    В листинге 7.8 приведена полная схема файла webservices.xml. Значки в квадратных скобках не входят в файл, они, как и в предыдущих главах, от- мечают обязательность и повторяемость элемента. Атрибут id во всех эле- ментах необязателен, он применяется для ссылки на элемент из другого файла.
    j Листинг 7.8. Структура конфигурационного файла Web-службы
    id="">

    id=""> [?]
    id=""> [?]
    [?]
    [+]
    id=""> [?]

    326 Разработка Web-служб средствами Java
    [?]
    id=""> [?]
    [?]
    id="">

    id="">
    id=""> [+]
    [?]
    [?]
    [?]
    [?]
    id="">
    id="">


    id="">

    id="">
    1   ...   13   14   15   16   17   18   19   20   21


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