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
15
45387 Total Views 1 Views Today

7 thoughts on “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]

  4. Никогда не понимал, в чем прикол выкладывать нерабочие проекты? Половины зависимостей в pom.xml просто нет. Вы пробовали компилировать проект перед загрузкой в репозиторий?

    1. Разумеется на момент написания всё работало, но это было более пяти лет назад..

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