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

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

До появления Интернета основным производителям было трудно договориться, какой транспортный протокол следует использовать. Когда протокол HTTP был выбран стандартом, он постепенно стал универсальным средством бизнес-коммуникации. Примерно в то же время XML также стал стандартом официально, когда W3C объявил, что XML 1.0 пригоден для развертывания в приложениях. К 1998 году обе составляющие, HTTP и XML, готовы были работать вместе.

SOAP 1.0, работа над которым началась в Microsoft в 1998 году, был выпущен в конце 1999 года. Он моделировал типизированные ссылки и массивы в схеме XML. К 2000 году компания IBM начала работу над SOAP 1.1, а WSDL представили на рассмотрение W3C в 2001 году. UDDI была написана в 2000 году усилиями организации по развитию стандартов структурированной информации (OASIS), чтобы позволить предприятиям предоставлять и обнаруживать веб-службы. SOAP, WSDL и UDDI стали стандартами де-факто, используемыми для создания веб-служб. Их поддерживали основные IT-компании.

Java представила возможности для работы с веб-службами в Java API для основанного на XML RPC 1.0 (JAX-RPC 1.0) в июне 2002 года, а JAX-RPC 1.1 был добавлен в J2EE 1.4 в 2003 году. Эта спецификация оказалась довольно избыточной и сложной в использовании. С появлением Java EE 5 и аннотаций в Java новая спецификация Java API для основанных на XML веб-службах версии 2.0 (JAX-WS 2.0) была представлена в качестве предпочтительной модели веб-служб SOAP. Сегодня Java EE 7 поставляется с JAX-WS 2.2a.

Спецификации, связанные с веб-службами SOAP

Чтобы освоить все стандарты веб-служб, вам придется потратить некоторое время на чтение всех спецификаций, перечисленных в табл. 14.3, начиная с W3C, JCP и OASIS.


Таблица 14.3. Спецификации и главные компании, связанные с веб-службами SOAP
СпецификацияВерсияКомпанияJSRURL
JAX-WS2.2aJCP224http://jcp.org/en/jsr/detail?id=224
Веб-службы1.3JCP109http://jcp.org/en/jsr/detail?id=109
Метаданные веб-служб2.1JCP181http://jcp.org/en/jsr/detail?id=181
JAXB2.2JCP222http://jcp.org/en/jsr/detail?id=222
SAAJ1.3JCP67http://jcp.org/en/jsr/detail?id=67
JAX-RPC1.1JCP101http://jcp.org/en/jsr/detail?id=101
JAXR1.1JCP93http://jcp.org/en/jsr/detail?id=93
SOAP1.2W3Chttp://www.w3.org/TR/soap/
XML1.1W3Chttp://www.w3.org/TR/xml
WSDL1.1W3Chttp://www.w3.org/TR/wsdl
UDDI1.0OASIShttp://uddi.org/pubs/uddi_v3.htm

W3C — это консорциум, который разрабатывает и поддерживает веб-технологии, такие как HTML, XHTML, RDF, CSS и т. д., и, что более интересно для веб-служб, XML, XML-схемы, SOAP и WSDL.

OASIS хранит несколько связанных с веб-службами стандартов, таких как UDDI, WS-Addressing, WS-Security, WS-Reliability и многие другие (известные как WS-*).

Вернемся к Java. JCP имеет набор спецификаций, которые являются частью Java EE 7 и Java SE 7. Они включают в себя JAX-WS 2.2a (JSR 224), Web Services 1.3 (JSR 109), Web Services Metadata 2.3 (JSR 181) и JAXB 2.2 (JSR 222). Вместе эти спецификации обычно неофициально называют Java Web Services (JWS — веб-службы Java). SAAJ (SOAP with Attachments API for Java — API SOAP с вложениями для Java), определенный в JSR 67, является частью Java SE и позволяет разработчикам создавать и использовать сообщения SOAP с вложениями.

Другие соответствующие спецификации были частью предыдущей версии Java EE и удалены или развиваются сейчас отдельно от Java EE. JAX-WS стал преемником JAX-RPC (JSR 101), который был слишком громоздким и сложным. JAX-RPC удален из Java EE 6, что означает, что его нет и в Java EE 7. Спецификация Java API для XML-реестров (Java API for XML Registers, JAXR) определяет стандартный набор API для Java, которые позволяют клиентам получать доступ к UDDI. Поскольку UDDI не имел ожидаемого успеха, этот JSR (93) был удален и не включен в Java EE 7.

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

JAX-WS 2.2a

JAX-WS 2.2a определяет набор API (основные пакеты перечислены в табл. 14.4) и аннотаций, которые позволяют создавать и использовать веб-службы в Java. Он предоставляет потребителям и службам возможности по отправке и получению запросов веб-служб через SOAP, маскируя сложность протокола. Таким образом, ни потребитель, ни служба не должны генерировать или анализировать SOAP-сообщения, поскольку низкоуровневой обработкой занимается JAX-WS. Спецификации JAX-WS зависят от других спецификаций, таких как архитектура Java для связывания XML (JAXB), которые вы видели в главе 12.


Таблица 14.4. Основные пакеты JAX-WS
ПакетОписание
javax.xml.wsВ этом пакете содержатся основные API JAX-WS
javax.xml.ws.httpОпределяет API, характерные для связывания XML/HTTP
javax.xml.ws.soapОпределяет API, характерные для связывания SOAP 1.1 / HTTP или SOAP 1.2 / HTTP
javax.xml.ws.handlerВ этом пакете определяются API для обработчиков сообщений

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