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

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

В этой главе сначала будут изложены некоторые важные сведения, чтобы вы могли понять, что такое веб-службы SOAP, такие как WSDL или SOAP. Далее будет показано, как создать веб-службу SOAP, а затем — как ее использовать.

Основные сведения о веб-службах SOAP

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

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


Рис. 14.1. Потребитель обнаруживает службу с помощью реестра


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

• расширяемый язык разметки (XML) — основной фундамент, на котором строятся и определяются веб-службы SOAP (SOAP, WSDL и UDDI);

• Web Services Description Language (WSDL, язык описания веб-служб) — определяет протокол, интерфейс, типы сообщений и взаимодействия между потребителем и поставщиком;

• Simple Object Access Protocol (SOAP, простой протокол доступа к объекту) — протокол кодирования сообщения, основанный на технологиях XML, определяющих «конверт» для общения веб-служб;

• транспортный протокол — позволяет обмениваться сообщениями. Хотя протокол передачи гипертекста (HTTP) является наиболее популярным транспортным протоколом, другие — такие как SMTP или JMS — также могут использоваться;

• Universal Description Discovery and Integration (UDDI) — необязательный реестр служб и механизмов обнаружения, похожий на телефонный справочник. Он может быть использован для хранения и категоризации SOAP-интерфейсов веб-служб (WSDL).

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

XML

Я уже описал XML в главе 12, и теперь вы знаете, как управлять XML-документами, анализировать и связывать их. Поскольку XML является идеальной технологией интеграции, которая решает проблему независимости данных и совместимости, он считается ДНК веб-служб SOAP. Помимо того, что XML используется в качестве формата сообщений, с его помощью веб-службы определяются (WSDL) или обмениваются (SOAP). Связанные с этими XML-документами схемы (XSD) применяются для проверки обмена данными между потребителем и поставщиком. Исторически веб-службы SOAP развились из основной идеи RPC (Remote Procedure Call, удаленный вызов процедур) с использованием XML.

WSDL

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


Рис. 14.2. Интерфейс WSDL между потребителем и веб-службой


Для обеспечения совместимости стандартный интерфейс веб-служб необходим потребителю и производителю, чтобы они могли поделиться сообщением и понять его. В этом заключается роль WSDL. В листинге 14.1 показан пример, который представляет собой интерфейс веб-службы SOAP, проверяющей кредитную карту (эта служба принимает в качестве входных данных сведения о кредитной карте и проверяет их). Документ WSDL состоит из чистого XML, и если вы прочтете его внимательно, то увидите всю информацию, необходимую для того, чтобы потребитель смог найти веб-службу (soap: address location), вызвать метод (operation name="validate") и использовать соответствующий транспортный протокол (soap: binding transport).


Листинг 14.1. Файл WSDL, представляющий службу проверки кредитной карточки

>

>

>······xmlns: wsam="http://www.w3.org/2007/05/addressing/metadata" 

>······xmlns: soap="http://schemas.xmlsoap.org/wsdl/soap/" 

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

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

>······xmlns="http://schemas.xmlsoap.org/wsdl/" 

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

>······name="CardValidatorService">

>··

>····

>······

>········schemaLocation="http://localhost:8080/chapter14/CardValidatorService?xsd=1"/>


Рекомендуем почитать
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 так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.