Статьи

Пошаговое руководство по веб-сервису

Основанный на SOAP веб-сервис

Основанный на SOAP веб-сервис

Чтобы узнать больше о веб-сервисах, давайте сначала разберемся с концепцией сервис-ориентированной архитектуры.

Что такое сервис-ориентированная архитектура?

Сервис-ориентированная архитектура — это принцип проектирования программного обеспечения и шаблон архитектурного проектирования, представляющий автономную единицу функциональности, называемую сервисом. SOA продвигает принципы проектирования, включающие слабую связь, возможность повторного использования и грубые услуги. В терминах корпоративной архитектуры преимущества SOA заключаются в обеспечении гибкости и быстром реагировании на потребности бизнеса, повышении окупаемости инвестиций за счет снижения затрат на интеграцию, снижения затрат на разработку за счет повторного использования компонентов. Корпоративные Aarchitect’s продвигают использование Enterprise Service Bus в качестве уровня интеграции для крупномасштабных корпоративных онлайн-приложений.
Например, очень хорошим примером будут выписка со счета ваших транзакций, информация о ценах на продукты, услуга обработки изображений, служба карт, служба определения местоположения и т. Д.

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

Веб-сервисы являются лишь формой реализации сервис-ориентированной архитектуры, которая может обмениваться данными между различными системами независимо от платформы. Поставщики услуг определяют интерфейс, описанный WSDL, и сообщения обмениваются с потребителями услуг с использованием сообщений SOAP. Сообщения могут передаваться по протоколам HTTP, FTP или SMTP.
Веб-сервисы могут быть на основе SOAP или REST.
В сегодняшнем пошаговом руководстве мы рассмотрим, как создать веб-сервис на основе SOAP и потребителя, который будет использовать веб-сервис. Мы будем использовать JAX-WS (API Java для веб-служб XML) для создания веб-службы.

Программного обеспечения:

Weblogic Application Server 12c
Eclipse Oepe 12c
Weblogic Webservice Tool — это автоматически создаст весь необходимый код и файлы WSDL и позволит разработчикам сосредоточиться на бизнес-логике.

Шаг 1:

В вашем Eclipse создайте новый динамический веб-проект.

Создать новый динамический веб-проект

Создать новый динамический веб-проект

Нажмите изменить и добавьте аспекты, связанные с компонентами Weblogic Webservice.

Шаг 2:

Установите флажки, чтобы убедиться, что все зависимые модули также включены, как указано на скриншоте.

Добавить аспекты проекта, связанные с Weblogic Webservice

Добавить аспекты проекта, связанные с Weblogic Webservice

Шаг 3:

Корнем контекста по умолчанию является CalculatorServiceServer, а каталогом содержимого веб-модуля — WebContent. Нажмите Готово.

Шаг 4:

Теперь щелкните правой кнопкой мыши по вновь созданному проекту и добавьте модуль Weblogic Web Service в ваш проект.

Создать новый Weblogic Webservice

Создать новый Weblogic Webservice

Шаг 5:

Создайте новый веб-сервис. Добавьте детали пакета и дайте имя веб-сервису.

Создать новый веб-сервис

Создать новый веб-сервис

Шаг 6:

Инструмент веб-сервиса в Eclipse создаст интерфейс конечной точки сервиса (контракт) с веб-методом по умолчанию hello (). Мы можем заменить метод по умолчанию требуемым методом — add (). Рекомендуется создать интерфейс, который объявляет методы, сопоставленные с операциями веб-службы. Этот интерфейс известен как интерфейс конечной точки службы (SEI). Всякий раз, когда мы видим аннотацию @WebService, это означает, что интерфейс является SEI.

Интерфейс вычислителя SEI

Интерфейс вычислителя SEI

Шаг 7:

CalculatorImpl.java создается как класс JWS (веб-служба Java).
Замените код по умолчанию, присутствующий в CalculatorImpl.java. Добавьте детали реализации в add ().

Реализация SEI - CalculatorImpl.java

Реализация SEI — CalculatorImpl.java

Шаг 8:

На приведенной ниже диаграмме показано сопоставление между реализацией веб-службы, аннотированной @webService, и сопоставлением wsdl.
Javax.jws.WebService сообщает серверу приложений, что этот класс должен рассматриваться как веб-сервис. Различные атрибуты javax.jws.Webservice:

  • name — Имя веб-сервиса и отображается на элемент <wsdl: portType> в файле WSDL.
  • targetNameSpace — пространство имен XML, используемое для элементов WSDL и XML, сгенерированных из этой веб-службы.
  • serviceName — сервисное имя веб-сервиса. Значением по умолчанию является имя файла jws с суффиксом «service».
  • wsdlLocation — URL-адрес абсолютного файла wsdl.
  • endpointInterface — это основано на существующей конечной точке (SEI) службы веб-сервиса.
Сравнение JAX-WS и WSDL

Сравнение JAX-WS и WSDL

На приведенном выше рисунке имя веб-службы в интерфейсе калькулятора сопоставлено с именем веб-службы, упомянутым в элементе portType в WSDL.
Взаимодействие portName, serviceName, целевого пространства имен и конечной точки службы (SEI) из CalculatorImpl.java сопоставляется с файлом CalculatorService.wsdl.

Шаг 9:

Теперь пришло время запустить веб-сервис на сервере Weblogic 12c, щелкнув правой кнопкой мыши по проекту и выбрав «Выполнить на сервере», добавив проект CalculatorServiceServer на сервер Weblogic и сконфигурировав их.

Добавить проект CalculatorServiceServer на сервер Weblogic

Добавить проект CalculatorServiceServer на сервер Weblogic

Шаг 10:

Веб-сервис теперь развернут на сервере и предоставлен клиентам для использования. Доступ к нему и управление им можно получить из консоли сервера weblogic.

Weblogic Server Console

Weblogic Server Console

Файл wsdl можно просмотреть и протестировать с места, как показано на скриншоте.

Шаг 11:

Файл wsdl с адресом удаленного расположения.

CalculatorService WSDL

CalculatorService WSDL

http://10.0.2.15:7001/CalculatorServiceServer/CalculatorServer?WSDL

Шаг 12:

На приведенной ниже диаграмме показан файл CalculatorService.wsdl и объяснены все ключевые элементы файла WSDL. WSDL — это контракт на обслуживание с клиентами и поставщиками услуг.
Определение — самый внешний элемент файла WSDL — это <определения>. Это контейнер для всех других элементов, определенных в документе wsdl. В итоге это корневой элемент.

  • <types> — описывает все типы данных, используемые и актуальные для обмена сообщениями между клиентом и сервером. Это необязательное поле. Раздел типов ссылается на XSD (определение схемы XML), которое определяет типы данных. Если этот раздел пуст, то веб-сервис будет использовать только простые типы данных.
  • <messages> — определяет данные, которыми обмениваются между поставщиком и потребителем веб-службы. Сообщения создаются из типов данных.
  • <portType> — представляет веб-сервис как именованные операции. Каждая операция может иметь одно или несколько сообщений.
  • <binding> — определяет способ передачи сообщений. Он доступен через HTTP GET, HTTP POST, SOAP (поверх протокола HTTP). Из раздела связывания определения WSDL переходят от абстрактного к конкретному, предоставляя конкретные сведения о веб-службе. Элемент привязки должен указывать подробности реализации веб-службы, абстрактно определенные в portType.
  • <сервис> — указывает на конечную точку, клиенты могут получить доступ к веб-сервису по этому пути.
CalculatorService WSDL объяснил

CalculatorService WSDL объяснил

Шаг 13:

Мы можем протестировать веб-сервис с помощью клиента Weblogic Test.

Тестовый клиент WebLogic

Тестовый клиент WebLogic

Шаг 14:

Тестовый клиент Weblogic показывает успешный результат операции добавления и выдает SOAP-сообщение с запросом и ответом.

Тестовый клиент - SOAP-запрос и ответ

Тестовый клиент — SOAP-запрос и ответ

Шаг 15:

Теперь я хочу создать сервлет, который будет действовать как клиент веб-сервиса, который будет использовать веб-сервис калькулятора, который мы создали на предыдущих шагах.
Создайте новый динамический веб-проект — CalculatorServiceClient и добавьте аспекты клиентов веб-службы Oracle Weblogic.

Добавить фасет клиента Weblogic Webservice

Добавить фасет клиента Weblogic Webservice

Шаг 16:

Создайте новый клиент веб-службы, щелкнув правой кнопкой мыши проект CalculatorServiceClient -> Выбрать новый -> Выбрать другой -> Поиск клиента веб-службы Weblogic из мастеров. Теперь введите ссылку на файл WSDL. В этом случае мы будем использовать удаленное определение файла WSDL. Прежде чем щелкнуть, убедитесь, что файл WSDL подтвержден.

Добавьте местоположение WSDL

Добавьте местоположение WSDL

При следующем нажатии коды CalculatorServiceServer экспортируются в CalculatorService.jar. При нажатии «Далее» укажите местоположение места выполнения WSDL. Я использовал Копировать WSDL в опцию jar клиента.

Создать CalculatorService.jar

Создать CalculatorService.jar

Шаг 17:

Теперь создайте класс Servlet, который будет вызывать Webservice.

Создать сервлет для вызова веб-службы

Создать сервлет для вызова веб-службы

Шаг 18:

Давайте посмотрим на клиентский код сервлета.

1
2
3
4
5
6
7
8
9
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        CalculatorService service = new CalculatorService();
        Calculator addservice = service.getCalculatorPort();
        int sum = addservice.add(1, 6);
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1> SUM=" + sum + "</h1>");      
        System.out.println("result sum-" + sum);
}

Выход сервлета отображает все результаты операции добавления.

TestCalculatorWS выход сервлета

TestCalculatorWS выход сервлета

Надеюсь, вам понравилась статья . Пожалуйста, оставьте свои комментарии и отзывы и поделитесь своими знаниями, используя кнопки социальных сетей.

Загрузите полный код: