Изучаем 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.
Спецификация | Версия | Компания | JSR | URL |
---|---|---|---|---|
JAX-WS | 2.2a | JCP | 224 | http://jcp.org/en/jsr/detail?id=224 |
Веб-службы | 1.3 | JCP | 109 | http://jcp.org/en/jsr/detail?id=109 |
Метаданные веб-служб | 2.1 | JCP | 181 | http://jcp.org/en/jsr/detail?id=181 |
JAXB | 2.2 | JCP | 222 | http://jcp.org/en/jsr/detail?id=222 |
SAAJ | 1.3 | JCP | 67 | http://jcp.org/en/jsr/detail?id=67 |
JAX-RPC | 1.1 | JCP | 101 | http://jcp.org/en/jsr/detail?id=101 |
JAXR | 1.1 | JCP | 93 | http://jcp.org/en/jsr/detail?id=93 |
SOAP | 1.2 | W3C | — | http://www.w3.org/TR/soap/ |
XML | 1.1 | W3C | — | http://www.w3.org/TR/xml |
WSDL | 1.1 | W3C | — | http://www.w3.org/TR/wsdl |
UDDI | 1.0 | OASIS | — | http://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.
Пакет | Описание |
---|---|
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 для обработчиков сообщений |
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.