SOAP java веб сервис. Пример Hello World example

Пример Java web-service с использованием технологии SOAP.

Используемые технологии и библиотеки
  • Apache CXF 3.1.6
  • Spring MVC 4.3.0.Release

1. Описание задачи

Создать простейший веб-сервис с использованием технологии SOAP. Написать простой класс веб сервиса на стороне сервера и обратиться к нему с помощью кода клиентской части.

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

SOAPProjectStructure

Создан один класс описывающий SOAP веб-сервис (HelloSoap). Для демонстрации вывода Java объекта в xml формате используются два класса (Goods, Document). Для обращение к SOAP веб-сервису была написана простая клиентская часть, которая описана в классе JavaStudyWS.

3. pom.xml

Для реализации веб-сервиса используется библиотека Apache CXF.

4. web.xml

Библиотека Spring MVC используется исключительно для запуска приложения и удобного описания SOAP веб-сервиса. Использование Spring не является обязательным и приложение запускается с помощью небольшого метода с публикацией soap сервиса. Файл с настройками application-context.xml (с описанием SOAP веб-сервиса) добавлен в дескриптор развертывания. Так же был добавлен mvc-config.xml (не используется) в параметры инициализации init-param диспетчера сервлетов, чтобы приложение не ругалось на отсутствие файла с настройками (dispatcher-servlet.xml).

web.xml:

Для реализации веб-сервиса используется реализация JAX-WS API — Apache CXF. Создан сервлет и задан шаблон URL по которому он будет срабатывать (/soap/*).

5. application-context.xml

В файле конфигурации спринг описывается один soap веб сервис — его id, адрес и реализующий класс.

Здесь прописан веб сервис с id = helloRestService. Он будет доступен по ссылке, которая формируется из пути сервера + маппинг сервлета + адреса обработки сервиса (в данном случае совпадает с id).

6. SOAP сервис

Был создан простейший веб сервис по технологии SOAP.

Описание SOAP веб-сервиса находится в интерфейсе WebserviceSEI (service endpoint interface). Аннотация @WebMethod не является обязательной, но в ней можно прописывать дополнительные параметры и свойства для веб-сервиса.

Реализация находится в классе HelloSoap:

В аннотации указан интерфейс, которые описывает веб-сервис, а также имя этого сервиса. Реализованы тривиальные методы, которые позволят продемонстрировать работу soap сервиса.

7. Модель данных

Созданы два демонстрационных класса, которые будут преобразовываться в xml формат и передаваться клиенту. У классов задана аннотация @XmlRootElement с помощью которой присваивается имя для корневого xml элемента в ответе (см. далее запуск приложения).

Goods:

Document:

8. SOAP клиент

Для тестирования нашего сервиса был создан код, имитирующий клиентскую сторону.

JavaStudyWS:

С помощью фабрики JaxWsProxyFactoryBean создается soap веб-сервис доступные по адресу soapServiceURL. Далее вызвается один из методов, описанных в интерфейсе сервиса.

9. Запуск веб сервиса

После запуска веб сервиса его описание можно посмотреть по ссылке http://localhost:8080/soap/webserviceSEI?wsdl.

WebserviceWSDL

 

Если запустить main метод класса JavaStudyWS, то мы увидим ответ веб-сервиса в консоли.

soapRun

9.1 SoapUI

SOAP веб-сервисы удобно тестировать с помощью утилиты SoapUI.

Добавляем новый SOAP проект.

SoapUI1

Указываем путь к wsdl описанию нашего сервиса.

SoapUI2

Запускаем метод веб-сервиса.

SoapUI3

 

Таким образом можно создать простейший SOAP веб сервис java.

Исходный код

SOAP HelloWorld

Share Button
5468 Total Views 12 Views Today
Комментарии (5) для “SOAP java веб сервис. Пример Hello World example
  1. sir.mllmn:

    «Для реализации веб-сервиса используется реализация Jax-RS API — Apache CXF. Создан сервлет и задан шаблон URL по которому он будет срабатывать (/rest/*).» — наверное, ошибка копи паста из примера рестфул вс.

  2. Евгения:

    Не работает. Запускаю, а мне в ответ

    Caused by: java.net.ConnectException: ConnectException invoking http://localhost:8080/soap/webserviceSEI: Connection refused: connect
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

    1. Из всего стектрейса ясно что проблема с
      Caused by: java.net.ConnectException: ConnectException invoking http://localhost:8080/soap/webserviceSEI: Connection refused: connect

  3. Надежда:

    А что в файле mvcconfig.xml? без него не запускается

    18-May-2017 22:16:06.335 SEVERE [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failed
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/config/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/config/applicationContext.xml]

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