Изучаем Java EE 7 - [216]

Шрифт
Интервал

>····

>··

>··

>····

>··

>··

>····

>··

>··

>····

>······

>······

>····

>··

>··

>····

>····

>······

>······

>········

>······

>······

>········

>······

>····

>··

>··

>····

>······

>····

>··

>

WSDL использует XML для описания того, что служба делает, как вызвать ее операции и где ее найти. Он следует фиксированной структуре, включающей несколько частей (types, message, portType, binding, service). В табл. 14.1 перечислено подмножество элементов и атрибутов WSDL. WSDL — богатый язык, который не ограничивается тем, что описано в табл. 14.1 и определяется W3C. Если вы хотите узнать больше о WSDL, его структуре и типах данных, перейдите на соответствующий сайт W3C.


Таблица 14.1. Элементы и атрибуты WSDL
ЭлементОписание
definitionsКорневой элемент WSDL, определяющий глобальные описания пространств имен, которые видны на протяжении всего документа
typesОпределяет типы данных, которые будут использованы в сообщениях. В этом примере приведено описание схемы XML (CardValidatorService?xsd=1) с параметрами, переданными запросу и ответу веб-служб
messageОпределяет формат данных, которые передаются между потребителем веб-службы и самой веб-службой. В примере у вас есть запрос (метод validate) и ответ (validateResponse)
portTypeОпределяет операции веб-служб (метод validate). Каждая операция ссылается на входное и выходное сообщение
bindingОписывает конкретный протокол (в данном случае SOAP) и форматы данных для операций и сообщений, определенных для конкретного типа порта
serviceСодержит коллекцию элементов , где каждый порт связан с конечной точкой (сетевым адресом или URL)
portУказывает адрес для связывания, таким образом определяя конечную точку коммуникации

Элемент относится к XML-схеме, которая должна быть доступна в сети потребителям WSDL. В листинге 14.2 показана схема определения типов данных, используемая в веб-службе: структура объекта CreditCard (с номером, сроком годности и т. д.), отправленная в запросе (validate), и двоичное значение (действительна карточка или нет), полученное в ответ (validateResponse).


Листинг 14.2. Схема импортируемых файлов WSDL

>

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

>···········targetNamespace="http://chapter14.javaee7.book.agoncal.org/

>"version="1.0">

>··

>··

>··

>····

>······

>····

>··

>··< xs: complexType name="creditCard">

>····

>····

>····

>····

>····

>··

>··

>····

>······

>····

>··

>

Если вы помните JAXB, описанный в главе 12, то поймете, что XSD в листинге 14.2 имеет всю необходимую для связывания с классами Java информацию. С помощью WSDL и схемы любой потребитель может генерировать требуемые для вызова веб-службы артефакты (как вы увидите позже, JAX-WS поставляется с утилитами, которые автоматически генерируют эти артефакты).

SOAP

WSDL описывает абстрактный интерфейс веб-службы, в то время как SOAP предоставляет конкретную реализацию, определяя XML-сообщения, которыми обмениваются потребитель и поставщик (рис. 14.3). SOAP — это стандартный протокол для приложений веб-служб. Он обеспечивает механизм связи для подключения веб-служб, обмена форматированными XML-данными через сетевой протокол, обычно HTTP. Как и WSDL, SOAP в значительной мере опирается на XML, поскольку сообщение SOAP — это XML-документ с несколькими элементами (конверт, заголовок, тело и т. д.). Вместо того чтобы использовать HTTP, для выполнения запроса веб-страниц с помощью браузера SOAP отправляет XML-сообщения, помещая их в запрос HTTP, и получает ответ HTTP.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.