Чтобы узнать больше о веб-сервисах, давайте сначала разберемся с концепцией сервис-ориентированной архитектуры.
Что такое сервис-ориентированная архитектура?
Сервис-ориентированная архитектура — это принцип проектирования программного обеспечения и шаблон архитектурного проектирования, представляющий автономную единицу функциональности, называемую сервисом. 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:
Установите флажки, чтобы убедиться, что все зависимые модули также включены, как указано на скриншоте.
Шаг 3:
Корнем контекста по умолчанию является CalculatorServiceServer, а каталогом содержимого веб-модуля — WebContent. Нажмите Готово.
Шаг 4:
Теперь щелкните правой кнопкой мыши по вновь созданному проекту и добавьте модуль Weblogic Web Service в ваш проект.
Шаг 5:
Создайте новый веб-сервис. Добавьте детали пакета и дайте имя веб-сервису.
Шаг 6:
Инструмент веб-сервиса в Eclipse создаст интерфейс конечной точки сервиса (контракт) с веб-методом по умолчанию hello (). Мы можем заменить метод по умолчанию требуемым методом — add (). Рекомендуется создать интерфейс, который объявляет методы, сопоставленные с операциями веб-службы. Этот интерфейс известен как интерфейс конечной точки службы (SEI). Всякий раз, когда мы видим аннотацию @WebService, это означает, что интерфейс является SEI.
Шаг 7:
CalculatorImpl.java создается как класс JWS (веб-служба Java).
Замените код по умолчанию, присутствующий в CalculatorImpl.java. Добавьте детали реализации в add ().
Шаг 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) службы веб-сервиса.
На приведенном выше рисунке имя веб-службы в интерфейсе калькулятора сопоставлено с именем веб-службы, упомянутым в элементе portType в WSDL.
Взаимодействие portName, serviceName, целевого пространства имен и конечной точки службы (SEI) из CalculatorImpl.java сопоставляется с файлом CalculatorService.wsdl.
Шаг 9:
Теперь пришло время запустить веб-сервис на сервере Weblogic 12c, щелкнув правой кнопкой мыши по проекту и выбрав «Выполнить на сервере», добавив проект CalculatorServiceServer на сервер Weblogic и сконфигурировав их.
Шаг 10:
Веб-сервис теперь развернут на сервере и предоставлен клиентам для использования. Доступ к нему и управление им можно получить из консоли сервера weblogic.
Файл wsdl можно просмотреть и протестировать с места, как показано на скриншоте.
Шаг 11:
Файл 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.
- <сервис> — указывает на конечную точку, клиенты могут получить доступ к веб-сервису по этому пути.
Шаг 13:
Мы можем протестировать веб-сервис с помощью клиента Weblogic Test.
Шаг 14:
Тестовый клиент Weblogic показывает успешный результат операции добавления и выдает SOAP-сообщение с запросом и ответом.
Шаг 15:
Теперь я хочу создать сервлет, который будет действовать как клиент веб-сервиса, который будет использовать веб-сервис калькулятора, который мы создали на предыдущих шагах.
Создайте новый динамический веб-проект — CalculatorServiceClient и добавьте аспекты клиентов веб-службы Oracle Weblogic.
Шаг 16:
Создайте новый клиент веб-службы, щелкнув правой кнопкой мыши проект CalculatorServiceClient -> Выбрать новый -> Выбрать другой -> Поиск клиента веб-службы Weblogic из мастеров. Теперь введите ссылку на файл WSDL. В этом случае мы будем использовать удаленное определение файла WSDL. Прежде чем щелкнуть, убедитесь, что файл WSDL подтвержден.
При следующем нажатии коды CalculatorServiceServer экспортируются в CalculatorService.jar. При нажатии «Далее» укажите местоположение места выполнения WSDL. Я использовал Копировать WSDL в опцию 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); } |
Выход сервлета отображает все результаты операции добавления.
Надеюсь, вам понравилась статья . Пожалуйста, оставьте свои комментарии и отзывы и поделитесь своими знаниями, используя кнопки социальных сетей.
Загрузите полный код:
Ссылка: | Пошаговое руководство по веб-сервису от нашего партнера JCG Майнака Госвами в блоге Idiotechie . |