Soap java что это

Введение в SOAP

Что такое SOAP?

SOAP расшифровывается как Simple Object Access Protocol (Простой Протокол Доступа к Объектам). Надеюсь по прочтении статьи вам останется только недоумевать: «Что за странное название?»

SOAP в теперешней его форме – это метод удаленного вызова (RPC, Remote procedure Call) по сети. (Да, он также используется для передачи документов в виде XML, но мы это пока опустим).

Давайте разбираться. Представьте, что у вас есть сервис, который возвращает биржевую котировку (stock quote) для заданного тикера (stock symbol). Он посылает данные на сайт Nasdaq и формирует на основе возвращенного HTML нужный результат. Дальше, чтобы позволить другим разработчикам использовать его внутри своих приложений, вы делаете из этого сервиса компонент, который через Интернет находит информацию о котировках. Работает он отлично, пока в один прекрасный день Nasdaq не меняет разметку своих страниц. Вам приходится пересмотреть всю логику работы компонента и разослать обновления всем разработчикам, использующим его. А им в свою очередь необходимо разослать обновления всем своим пользователям. Если это происходит на более-менее постоянной основе, вы можете нажить немало врагов среди коллег-разработчиков. А с программистами, как известно, шутки плохи. Вы же не хотите завтра доставать фотографию любимого кота из офисного шредера, правда?

Что же делать? Посмотрим. все, что вам нужно, это предоставить одну функцию, которая будет принимать на вход тикер (типа string) и возвращать биржевую котировку (типа float или double). Так не проще ли было бы просто позволить вашим разработчикам каким-то образом вызвать эту функцию через Интернет? Отлично! Тоже мне новость, есть же COM и Corba, и Java, которые этим занимаются уже годами. что правда – то правда, но эти методы не без изъяна. Удаленная настройка COM не тривиальна. Кроме того, нужно открыть столько портов в брандмауэре, что на системного администратора пива не напасешься. Да, и придется забыть о пользователях всех операционных систем кроме Windows. Но ведь позьзователи Linux тоже иногда интересуются биржей.

Хотя, похоже, что не все потеряно для пользователей Linux, если они используют DCOM, больше здесь: http://www.idevresource.com/com/library/res/articles/comonlinux.asp.

На счет Corba и Java я много сказать не могу, так что в качестве упражнения предлагаю читателям найти минусы в этих подходах.

SOAP – это стандарт, который позволяет вам описать такой удаленный вызов и вид, в котором будет возвращаться результат. Таким образом вам нужно разместить вашу функцию в приложении, доступном по сети и получать вызовы в виде SOAP пакетов. После этого вы валидируете входные данные, запускаете вашу функцию и возвращаете результат в новом SOAP пакете. Весь процесс может работать через HTTP, так что вам не придется открывать кучу портов в брандмауэре. Правда просто?

О чем эта статья

Это первая из серии статей о SOAP, которые мы пишем в Agni Software. В этой статье я постараюсь дать вам представление о том, что такое SOAP и как написать приложение, общающееся с SOAP сервером.

Soap и XML

Если вам SOAP пока еще кажется простым, добавим XML. Теперь вместо имени функции и параметров мы получаем довольно сложный XML-конверт, как будто созданный для того, чтобы сбить вас с толку. Но не спешите пугаться. Дальше – больше, и вам нужно увидеть всю картину, чтобы оценить всю сложность SOAP.
Если вы не знаете, что такое XML, для начала прочтите мою статью об XML здесь: http://www.agnisoft.com/white_papers/xml_delphi.asp.

Все SOAP пакеты имеют XML формат. Что это значит? Посмотрим. Взгляните на эту функцию (Pascal):
Выглядит отлично, но проблема в том, что это – Pascal. Какая польза от этого простого определения для Java-разработчика? Или для кого-то, кто работает с VB? Нам нужно что-то, что будет понятно всем, даже VB-программистам. Так дайте им XML, содержащий одну и ту же инфрмацию (параметры, значения биржевых котировок и т.д.). Вы создаете SOAP пакет, который по сути является вызовом вашей функции, обернутый в XML, чтобы любое приложения на любой платформе могло его понять. Теперь посмотрим, как выглядит наш SOAP вызов:
Информативно, правда? SOAP упрощается на глазах. Ладно, шутки в сторону. Теперь я постараюсь объяснить вам, как разобраться в этом SOAP вызове.

Расшифровка тегов

Лирическое отступление на счет пространств имен: Пространство имен дает возможность квалифицировать XML тег. Нельзя, к примеру, иметь две переменные с одинаковым именем в одной процедуре, но если они в двух разных процедурах, проблем не возникает. Таким образом процедура – это пространство имен, так как все имена в ней уникальны. Точно так же XML теги имеют свою область видимости внутри пространств имен, так что имея пространство имен и имя тега, можно однозначно его идентифицировать. Мы определим пространство имен как URI, чтобы отличать наш NS1 от подражателей. В приведенном выше примере NS1 – это алиас, указывающий на urn:xmethods-quotes.

Обратите внимание также на атрибут encodingStyle – этот атрибут определяет каким образом сериализуется SOAP вызов.

Внутри тега указано «IBM». Это – значение параметра symbol функции GetStockQuote.

Ну и в конце, как порядочные люди, мы закрыли все теги.

Вот и разобрались с SOAP пакетом, определяющим вызов к SOAP серверу. А SOAP сервер с помощью XML парсеров, красной кнопки и космической станции «МИР» декодирует этот вызов и определяет, что вам нужна биржевая котировка. Он тут же находит нужную котировку и возвращает вам ее в таком виде:
После разворачивания SOAP конверта, срывания ленточек и шуршания оберткой, мы узнаем, что цена акции IBM – 34.5.

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

Таким образом мы знаем, чего ожидает SOAP сервер и что он вернет. Так КАК же отправить эту информацию? Использовать можно любой транспорт. Самым освещенным является HTTP. Я не стану вдаваться в подробности HTTP, для тех, кто не знает – это то, что использует ваш браузер, чтобы общаться с сайтами, на которые вы заходите.

Нужный HTTP запрос будт выглядеть приблизительно так:
Единственное, что еще стоит отметить – это заголовок SOAPAction. Этот заголовок указывает на цель запроса и является обязательным. Каждый SOAP сервер может иметь неограниченное количество функций и может использовать заголовок SOAPAction чтобы определить какую функцию вызывают. Брандмауэры и мультиплексоры также могут фильтровать контент на основании этого заголовка.

SOAP ответ от HTTP сервера будет выглядеть следующим образом:
Почему HTTP? Во-первых, сетевым администраторам не придется открывать уйму отдельных портов для SOAP вызовов. веб-сервер может спокойно обрабатывать вызовы, т.к. 80-й порт обычно открыт для всех для приема входящих запросов. Еще одним преимуществом является расширяемость веб-серверов с помощью CGI, ISAPI и других нативных модулей. Эта расширяемость позволяет написать модуль, обрабатывающий SOAP запросы не задевая другого веб-контента.

Надеюсь, эта статья помогла пролить немного света на SOAP. Если вы еще здесь и хотите почитать больше на эту тему, посетите сайт авторов: http://www.agnisoft.com/soap

Если Вам понравилась статья, проголосуйте за нее

Голосов: 15 Голосовать Soap java что это. Смотреть фото Soap java что это. Смотреть картинку Soap java что это. Картинка про Soap java что это. Фото Soap java что это

Источник

SOAP-сервер на Java при участии Apache CXF и Spring

0. Начальные условия

Вот так выглядит исходная WSDL-схема:

Сервис имеет весьма простую функциональность: возвращает текущее время в указанном часовом поясе. В случае, когда пояс не указан, сервис возвращает текущее время сервера.

Структура проекта

Soap java что это. Смотреть фото Soap java что это. Смотреть картинку Soap java что это. Картинка про Soap java что это. Фото Soap java что это

Определим структуру проекта. В папке build будем хранить скрипты для ant. В модуле ObjectLibrary будем держать исходную схему, а также сгенерированные по ней классы. Модуль CurrentTimeService будет основным, в нем будем держать реализацию сервиса, также по нему будем собирать war-файл.

В pom-файлах укажем необходимые модулям зависимости. Внешних зависимостей у нас будет не много: spring-web, log4j, cxf-rt-frontend-jaxws и cxf-rt-transports-http — все они доступны в http://repo1.maven.org/maven2.

1. Создание java-интерфейса на основе WSDL-схемы

Для автоматической генерации java-интерфейса на основе WSDL-схемы воспользуемся утилитой wsdl2java из пакета Apache CXF. Немного модифицируем исходный ant-скрипт для того, чтобы он предварительно очищал директорию, в которую будут складываться java-классы. Это может быть полезно в том случае, если в будущем исходная схема будет меняться. По-умолчанию директория не очищается, что может приводить к появлению «мусора» из классов, которые больше не используются. Такая проблема характерна для схем, имеющих в своем составе сложные составные типы.

Разместим этот скрипт в файле build/build.xml. Запустим таску regenerate.object.library, в результате работы которой в папке ObjectLibrary получим необходимый нам интерфейс.

2. Реализация веб-сервиса на основе полученного интерфейса

Реализацию интерфейса CurrentTimeService разместим в одноименном модуле. Код незамысловатый и в дополнительных комментариях не нуждается.

Теперь, в соответствии с примером, добавим в ресурсы файлы serviceContext.xml и web.xml. Также не забудем про log4j.xml. Найти эти файлы можно в архиве с исходными кодами, ссылка на него приведена в конце статьи. После этого реализацию сервиса можно считать законченной, осталось собрать приложение и проверить его работоспособносcть.

3. Сборка и проверка

Для сборки проекта выполним задачу maven «package». Полученный war-файл развернем на сервере Tomcat. Будем считать, что он доступен на порту 8080.

Soap java что это. Смотреть фото Soap java что это. Смотреть картинку Soap java что это. Картинка про Soap java что это. Фото Soap java что это

Для проверки воспользуемся программой soapUI. WSDL-схема сервиса доступна по ссылке http://localhost:8080/CurrentTimeService/service/currentTimeService?wsdl, с ее помощью мы можем создать новый проект soapUI.

Вместо заключения

Поставленная задача достигнута: веб-сервис корректно обрабатывает запросы. Также нам удалось избежать «жесткой» привязки к генерируемой реализации, что делает код более гибким и позволяет прикладывать меньше усилий для внесения изменений в дальнейшем.

Источник

Что такое SOAP?

Объясните, пожалуйста, простыми словами, что такое SOAP, для чего нужен, и, если можно, пару примеров использования.

6 ответов 6

Лирическая часть.

Представьте что у вас реализована или реализуется некая система, которая должна быть доступна извне. Т.е. есть некий сервер, с которым вам надо общаться. Например веб-сервер.

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

Практическая часть.

Веб-сервис (так называется то, что предоставляет сервер и то, что используют клиенты) дает возможность общения с сервером четко структурированными сообщениями. Дело в том, что веб-сервис не принимает абы какие данные. На любое сообщение, которое не соответствует правилам, веб-сервис ответит ошибкой. Ошибка будет, кстати, тоже в виде xml с четкой структурой (чего нельзя сказать правда о тексте сообщения).

WSDL (Web Services Description Language). Правила, по которым составляются сообщения для веб-сервиса описываются так же с помощью xml и также имеют четкую структуру. Т.е. если веб-сервис предоставляет возможность вызова какого-то метода, он должен дать возможность клиентам узнать какие параметры для данного метода используются. Если веб-сервис ждет строку для метода Method1 в качестве параметра и строка должна иметь имя Param1, то в описании веб-сервиса эти правила будут указаны.

Для клиентов достаточно знать url веб-сервиса, wsdl всегда будет рядом, по которому можно получить представление о методах и их параметрах, которые предоставляет этот веб-сервис.

Какие плюсы у всех этих наворотов:

Описание, имеющее четкую структуру, читается любым soap-клиентом. Т.е. какой бы ни был веб-сервис, клиент поймет какие данные веб-сервис принимает. По этому описанию клиент может построить свою внутреннюю структуру классов объектов, т.н. binding’и. В итоге программисту, использующему веб-сервис, остается написать что-то типа (псевдокод):

Минусов тоже полно:

В качестве примера есть открытый веб-сервис belavia:

Можете вручную создать и послать запрос типа:

ЗЫ Раньше был открыт веб-сервис аэрофлота, но после того как 1C добавили поддержку soap в 8ку, куча 1с-бета-тестеров с успехом положили его. Сейчас что-то там поменяли (адреса не знаю, можно поискать, если интересно).
ЗЗЫ Дисклеймер. Рассказал на бытовом уровне. Пинать можно.

Источник

Веб-сервисы в Java

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

Что такое веб-сервис в Java?

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

Преимущества

Как правило, существует два типа веб-сервисов в Java:

1. Soap

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

Soap java что это. Смотреть фото Soap java что это. Смотреть картинку Soap java что это. Картинка про Soap java что это. Фото Soap java что это

На приведенном выше рисунке вы можете заметить, как клиент будет общаться с поставщиком услуг. Поэтому для связи клиент должен знать такую информацию, как расположение сервера веб-служб, доступные функции, типы подписи и возврата, а также форматы ввода-вывода.

Поставщик услуг создаст стандартный XML-файл, который будет содержать всю вышеуказанную информацию. Таким образом, если этот файл передан клиенту, он сможет получить доступ к веб-сервису.

2. RESTful

Передача состояния представления (REST) – это клиент-серверная архитектура без сохранения состояния, в которой веб-службы рассматриваются как ресурсы и могут быть идентифицированы по их URL-адресам. Он состоит из двух компонентов REST-сервера, который обеспечивает доступ к ресурсам, и REST-клиента, который получает доступ и изменяет ресурсы REST. Взгляните на рисунок ниже для того же.

Soap java что это. Смотреть фото Soap java что это. Смотреть картинку Soap java что это. Картинка про Soap java что это. Фото Soap java что это

В этом стиле архитектуры REST клиент и сервер обмениваются представлениями ресурсов, используя стандартизированный интерфейс и протокол. REST не является конкретным протоколом, но когда люди говорят о REST, они обычно имеют в виду REST по HTTP. Ответ от сервера рассматривается как представление ресурсов. Это представление может быть сгенерировано из одного или нескольких ресурсов. Веб-службы RESTful используют методы протокола HTTP для операций, которые они выполняют. Он включает в себя такие методы, как GET, POST, DELETE и т. д.

Существует два основных API, определенных для разработки приложений веб-служб.

Оба эти API-интерфейса Java являются частью стандартной установки JDK, поэтому вам не нужно добавлять какие-либо jar-файлы для работы с ними.

Пример JAX-WS

Давайте создадим простое приложение Hello World JAX-WS. Здесь создадим простой файл класса с именем Demo.java и напишем программу, как показано ниже, для отображения простого сообщения.

Вы можете просто запустить это приложение, и сообщение веб-службы JAX-WS SOAP будет опубликовано.

Пример JAX-RS

Джерси является эталонной реализацией API JAX-RS, он не является частью стандартного JDK, и вы должны включить все необходимые банки. Лучший способ – использовать сборку Maven, поэтому создайте простой веб-проект Dynamic, а затем преобразуйте его в Maven в Eclipse.

Чтобы создать приложение JAX-RS, вам необходимо выполнить следующие шаги.

Шаг 1: Добавьте зависимости в файл pom.xml, как показано ниже:

Шаг 2: Теперь следующим шагом является добавление сервлета Jersey в наш дескриптор развертывания web.xml в качестве фронт-контроллера.

Шаг 3: После всего этого давайте теперь создадим простой класс обслуживания JAX-RS.

После настройки вышеуказанного файла вам просто нужно экспортировать его как файл WAR, а затем получить к нему доступ в браузере. Вы получите вывод, как показано ниже.

Источник

Собеседование по Java EE — Web services (вопросы и ответы)

Список вопросов и ответов по теме «Веб-сервисы» в Java (Java web services).

к списку вопросов раздела JEE

Вопросы

1. Что такое веб сервисы?
2. В чем разница между SOA и web service?
3. Что такое SOAP?
4. Что такое REST?
5. В чем разница между REST и SOAP веб сервисами?
6. Как бы вы решили какой из REST или SOAP веб сервисов использовать?
7. Объясните понятие WSDL.
8. Что такое JAX-WS?
9. Расскажите о JAXB.
10. Можем ли мы посылать soap сообщения с вложением?
11. Что такое MTOM?
12. Что такое XOP?
13. Объясните элемент SOAP envelope.
14. Как определяется пространство имен SOAP?
15. Что вы знаете о кодировании в SOAP (encoding)?
16. Что определяет атрибут encodingStyle в SOAP?
17. Какие два конечных типа веб сервисов используют JAX-WS?
18. Какие существуют правила для кодирования записи header?
19. Что вы знаете об инструменте wsimport?
20. Что вы знаете об инструменте wsgen?
21. Какие вы можете выделить различия между SOAP и другими техниками удаленного доступа?
22. Что такое resource в REST?
23. Какие HTTP методы поддерживаются в REST?
24. Когда можно использовать GET запрос вместо POST для создания ресурса?
25. Какая разница между GET и POST запросами?
26. Что означает WADL?
27. Какие вы знаете фреймворки, которые реализуют REST веб сервисы?
28. Какая разница между AJAX и REST?
29. Что делает аннотация @Path?
30. Что делает аннотация @PathParam?
31. Что делает аннотация @QueryParam?
32. Что делает аннотация @MatrixParam?
33. Что делает аннотация @FormParam?
34. Какие два способа получения заголовка HTTP запроса в JAX-RS вы знаете?
35. Как скачать файл с помощью JAX-RS?

Ответы

1. Что такое веб сервисы?

Веб-служба, веб-сервис (англ. web service) — идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (SOAP, XML-RPC, REST и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения. К характеристикам веб сервисов относят:

2. В чем разница между SOA и web service?

Сервис-ориентированная архитектура (SOA, service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных (англ. loose coupling) заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации (например, на базе jini, CORBA, на основе REST). Веб сервисы реализующие эту концепцию используют XML, JSON и др., а так же интернет протоколы вроде HTTP(S), SMTP и др..

3. Что такое SOAP?

SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам; вплоть до спецификации 1.2) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.

SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

4. Что такое REST?

REST (сокр. от англ. Representational State Transfer — «передача состояния представления») — архитектурный стиль взаимодействия компонентов распределённого приложения в сети. REST представляет собой согласованный набор ограничений, учитываемых при проектировании распределённой гипермедиа-системы. В определённых случаях (интернет-магазины, поисковые системы, прочие системы, основанные на данных) это приводит к повышению производительности и упрощению архитектуры. В широком смысле компоненты в REST взаимодействуют наподобие взаимодействия клиентов и серверов во Всемирной паутине. REST является альтернативой RPC.

В сети Интернет вызов удалённой процедуры может представлять собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Для веб-сервисов, построенных с учётом REST, то есть не нарушающих накладываемых им ограничений, применяют термин «RESTful».

5. В чем разница между REST и SOAP веб сервисами?

REST vs SOAP. Часть 1. Почувствуйте разницу: https://habrahabr.ru/post/131343/

6. Как бы вы решили какой из REST или SOAP веб сервисов использовать?

REST против SOAP можно перефразировать как «Простота против Стандарта». В случае REST (простота) у вас будет скорость, расширяемость и поддержка многих форматов. В случае с SOAP у вас будет больше возможностей по безопасности (WS-security) и транзакционная безопасность (ACID).

7. Объясните понятие WSDL.

WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.

Каждый документ WSDL 1.1 можно разбить на следующие логические части:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *