Начало работы с веб-службами JAX-WS
API -интерфейс Java для веб-служб XML (JAX-WS), JSR 224, является важным компонентом платформы Java EE. Следующий выпуск интерфейса API Java для RPC на основе XML 1.1 (JAX-RPC), JAX-WS упрощает задачу разработки веб-служб с помощью технологии Java. В нем решены некоторые проблемы JAX-RPC 1.1, и обеспечивается поддержка нескольких протоколов, например SOAP 1.1, SOAP 1.2, XML, а также возможность поддержки дополнительных протоколов наряду с HTTP. В JAX-WS для привязки данных используется JAXB 2.0; также поддерживается индивидуальная настройка для управления интерфейсами создаваемых интерфейсов конечных точек служб. Поддержка аннотаций в JAX-WS упрощает разработку веб-служб и уменьшает размер архивов JAR.
В этом документе рассматриваются основные принципы использования среды IDE для разработки веб-службы JAX-WS. После создания веб-службы будут написаны три разных клиента веб-служб, использующие веб-службу по сети, т.е. "потребляющие" веб-службу. Этими тремя клиентами будут класс Java в приложении для Java SE, сервлет и страница JSP в веб-приложении. Более подробно работа с клиентами освещена в учебном курсе Разработка клиентов веб-служб JAX-WS.
Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.
Пакетная загрузка Java EE
JDK 7 или JDK 8
Веб-сервер или сервер приложений, совместимый с Java EE
GlassFish Server Open Source Edition Oracle WebLogic Server
*Примечание. *Сервер GlassFish можно установить вместе с дистрибутивом Java EE среды IDE NetBeans. Также можно воспользоваться страницей загрузок GlassFish Server или страницей загрузок Apache Tomcat.
*Важно! *Для проектов Java EE требуется GlassFish Server или Oracle WebLogic Server 12c.
Включенный в комплект веб-сервер Tomcat лишь частично совместим с Java EE Однако веб-сервер Tomcat 7.x можно настроить так, чтобы он поддерживал определенную функциональность Java EE. Дополнительные сведения о добавлении поддержки Java EE в Tomcat см. в разделе Проект Apache TomEE.
Создание веб-службы
Цель этого упражнения состоит в создании проекта в соответствии с используемым контейнером развертывания. После создания проекта будет создана веб-служба.
Выбор контейнераВеб-служба может быть развернута в веб-контейнере или в контейнере EJB. Это зависит от конкретной реализации. При создании приложения Java EE всегда используйте веб-контейнер, так как это позволяет поместить компоненты EJB непосредственно в веб-приложение. Например, если развертывание планируется на веб-сервере Tomcat, предоставляющем только веб-контейнер, следует создавать веб-приложение, а не модуль EJB.
Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N в Windows и Linux, ⌘-Shift-N в ОС Mac). Выберите "Веб-приложение" из категории "Java Web" или "Модуль EJB" из категории "Java EE".
Веб-службу JAX-WS можно создать в проекте Maven. Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N в Linux и Windows, ⌘-Shift-N ы MacOS), а затем веб-приложение Maven или модуль Maven EJB в категории Maven. Если ранее вы не использовали Maven со средой NetBeans, ознакомьтесь с документом Maven Best Practices (Рекомендации по Maven).
Дайте проекту имя CalculatorWSApplication . Выберите местоположение для проекта. Нажмите кнопку "Далее".
Выберите свой сервер и версию Java EE и щелкните "Готово".
Для использования сервера Oracle WebLogic зарегистрируйте сервер с помощью среды IDE. Кроме этого, если вы используете сервер WebLogic, просмотрите экранную демонстрацию Deploying a Web Application to Oracle WebLogic (Развертывание веб-приложения на Oracle WebLogic).
Создание веб-службы из класса JavaЩелкните правой кнопкой мыши узел CalculatorWSApplication и выберите "Создать > Веб-служба".
Присвойте веб-службе имя CalculatorWS и введите org.me.calculator в поле "Пакет". Оставьте установленной кнопку-переключатель "Создать веб-службу с нуля".
При создании проекта Java EE на сервере GlassFish или WebLogic выберите 'Реализовать веб-службу' в качестве компонента сеанса без сохранения состояния.
Нажмите кнопку 'Готово'. В окне "Проекты" отображается структура новой веб-службы, а в области редактора отображается исходный код.
Добавление операции к веб-службам
Целью этого упражнения является добавление к веб-службам операции, выполняющей сложение двух чисел, полученных от клиента. IDE NetBeans обеспечивает диалоговое окно для добавления операции с веб-службой. Это диалоговое окно можно открыть либо в визуальном конструкторе, либо в контекстном меню веб-службы.
Внимание! В проектах Maven визуальный конструктор недоступен.
Для добавления операции в веб-службу выполните следующие действия.
измените представление "Конструктор" в окне редактора.
Найдите узел веб-службы в окне "Проекты". Щелкните узел правой кнопкой мыши. Откроется контекстное меню.
Щелкните "Добавить операцию" либо в визуальном конструкторе, либо в контекстном меню. Откроется диалоговое окно "Добавление операции".
В верхней части диалогового окна "Добавить операцию" введите add в 'Имя' и введите int в раскрывающийся список "Тип возвращаемого значения".
В нижней части диалогового окна "Добавить операцию" нажмите кнопку "Добавить" и создайте параметр типа int с именем i .
Снова щелкните "Добавить" и создайте параметр типа int с именем j .
На экране должны быть представлены следующие параметры:
Нажмите кнопку "ОК" в нижней части диалогового окна "Добавить операцию". Вы вернетесь в редактор.
Удалите операцию по умолчанию hello . Для этого либо удалите метод hello() в исходном коде, либо выберите операцию hello в визуальном конструкторе и щелкните "Удалить операцию".
Теперь в Visual Designer отображается следующее:
Нажмите кнопку "Исходный код" и посмотрите на код, созданный в результате предыдущих действий. Он будет различаться в зависимости от того, как создана служба: в качестве компонента Java EE без сохранения состояния или обычным способом. Обратите внимание на разницу в снимках экрана ниже: (Служба Java EE 6 или Java EE 7, не реализованная в качестве компонента без сохранения состояния, похожа на службу Java EE 5.)
Примечание. При работе в IDE NetBeans 7.3 и 7.4 вы увидите, что в созданной аннотации @WebService имя службы указано явно: @WebService(serviceName = "CalculatorWS") .
В редакторе расширьте схему операции add следующим образом (изменения выделены полужирным шрифтом):
Как видно из указанного кода, веб-служба просто получает два числа и затем возвращает их сумму. В следующем разделе рассматривается тестирование веб-службы в среде IDE.
Развертывание и тестирование веб-службы
После развертывания веб-службы на сервере можно использовать среду IDE для открытия клиента тестирования сервера, если у сервера имеется такой клиент. Серверы GlassFish и WebLogic предоставляют тестовые клиенты.
Если используется веб-сервер Tomcat, клиент тестирования отсутствует. Вы можете только запустить проект и проверить, открывается ли страница веб-служб Tomcat. В этом случае, прежде чем запустить проект, необходимо сделать веб-службу точкой входа в приложение. Чтобы сделать веб-службу точкой входа в приложение щелкните правой кнопкой мыши узел проекта CalculatorWSApplication и выберите 'Свойства'. Откройте 'Свойства выполнения' и введите /CalculatorWS в поле 'Относительный адрес'. Нажмите кнопку "ОК". Запустите приложение (повторно щелкните правой кнопкой мыши узел проекта и выберите 'Выполнить').
Для проверки успешности развертывания на сервере GlassFish или WebLogic выполните следующие действия.
Щелкните проект правой кнопкой мыши и выберите команду "Развернуть". Запускается сервер приложений, выполняется сборка и развертывание приложения на сервере приложений. За ходом выполнения этих операций можно наблюдать в приложении CalculatorWSApplication (запуск-развертывание) и на вкладках серверов GlassFish или Tomcat в окне вывода.
На вкладке "Проекты IDE" разверните узел "Веб-службы" проекта "CalculatorWSApplication". Щелкните правой кнопкой мыши узел "CalculatorWS" и выберите "Тестировать веб-службу".
Страница тестирования открывается в браузере, если веб-приложение развернуто на сервере GlassFish. В случае использования веб-сервера Tomcat и развертывания модулей EJB ситуация отличается:
Если развертывание выполнялось на GlassFish, введите на странице тестирования два числа, как показано ниже: