Начало работы с веб-службами 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.

Содержание

Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0

Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.

Программное обеспечение или материал Требуемая версия
IDE NetBeans Пакетная загрузка Java EE
Комплект для разработчика на языке Java (JDK) 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.

  1. Выберите 'Файл' > 'Создать проект' (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).

  2. Дайте проекту имя CalculatorWSApplication. Выберите местоположение для проекта. Нажмите кнопку "Далее".
  3. Выберите свой сервер и версию Java EE и щелкните "Готово".

    Для использования сервера Oracle WebLogic зарегистрируйте сервер с помощью среды IDE. Кроме этого, если вы используете сервер WebLogic, просмотрите экранную демонстрацию Deploying a Web Application to Oracle WebLogic (Развертывание веб-приложения на Oracle WebLogic).

Создание веб-службы из класса Java

  1. Щелкните правой кнопкой мыши узел CalculatorWSApplication и выберите "Создать > Веб-служба".
  2. Присвойте веб-службе имя CalculatorWS и введите org.me.calculator в поле "Пакет". Оставьте установленной кнопку-переключатель "Создать веб-службу с нуля".
  3. При создании проекта Java EE на сервере GlassFish или WebLogic выберите 'Реализовать веб-службу' в качестве компонента сеанса без сохранения состояния.
    Мастер создания веб-служб для EE с параметрами компонентов
  4. Нажмите кнопку 'Готово'. В окне "Проекты" отображается структура новой веб-службы, а в области редактора отображается исходный код.

Добавление операции к веб-службам

Целью этого упражнения является добавление к веб-службам операции, выполняющей сложение двух чисел, полученных от клиента. IDE NetBeans обеспечивает диалоговое окно для добавления операции с веб-службой. Это диалоговое окно можно открыть либо в визуальном конструкторе, либо в контекстном меню веб-службы.

Внимание! В проектах Maven визуальный конструктор недоступен.

Для добавления операции в веб-службу выполните следующие действия.

  1. Либо
    • измените представление "Конструктор" в окне редактора.
      Представление проектирования редактора веб-служб

    Либо

    • Найдите узел веб-службы в окне "Проекты". Щелкните узел правой кнопкой мыши. Откроется контекстное меню.
      Контекстное меню узла веб-службы с выделенным элементов 'Добавить операцию'
  2. Щелкните "Добавить операцию" либо в визуальном конструкторе, либо в контекстном меню. Откроется диалоговое окно "Добавление операции".
  3. В верхней части диалогового окна "Добавить операцию" введите add в 'Имя' и введите int в раскрывающийся список "Тип возвращаемого значения".
  4. В нижней части диалогового окна "Добавить операцию" нажмите кнопку "Добавить" и создайте параметр типа int с именем i.
  5. Снова щелкните "Добавить" и создайте параметр типа int с именем j.

    На экране должны быть представлены следующие параметры:


    Диалоговое окно "Добавление операции".
  6. Нажмите кнопку "ОК" в нижней части диалогового окна "Добавить операцию". Вы вернетесь в редактор.
  7. Удалите операцию по умолчанию hello. Для этого либо удалите метод hello() в исходном коде, либо выберите операцию hello в визуальном конструкторе и щелкните "Удалить операцию".

    Теперь в Visual Designer отображается следующее:


    В Visual Designer веб-службы отображается добавленная операция
  8. Нажмите кнопку "Исходный код" и посмотрите на код, созданный в результате предыдущих действий. Он будет различаться в зависимости от того, как создана служба: в качестве компонента Java EE без сохранения состояния или обычным способом. Обратите внимание на разницу в снимках экрана ниже: (Служба Java EE 6 или Java EE 7, не реализованная в качестве компонента без сохранения состояния, похожа на службу Java EE 5.)
    Результаты EE5 Результат: компонент bean EE 6 без состояния

    Примечание. При работе в IDE NetBeans 7.3 и 7.4 вы увидите, что в созданной аннотации @WebService имя службы указано явно:
    @WebService(serviceName = "CalculatorWS").

  9. В редакторе расширьте схему операции add следующим образом (изменения выделены полужирным шрифтом):
        @WebMethod
        public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
            int k = i + j;
            return k;
          }

Как видно из указанного кода, веб-служба просто получает два числа и затем возвращает их сумму. В следующем разделе рассматривается тестирование веб-службы в среде IDE.

Развертывание и тестирование веб-службы

После развертывания веб-службы на сервере можно использовать среду IDE для открытия клиента тестирования сервера, если у сервера имеется такой клиент. Серверы GlassFish и WebLogic предоставляют тестовые клиенты.

Если используется веб-сервер Tomcat, клиент тестирования отсутствует. Вы можете только запустить проект и проверить, открывается ли страница веб-служб Tomcat. В этом случае, прежде чем запустить проект, необходимо сделать веб-службу точкой входа в приложение. Чтобы сделать веб-службу точкой входа в приложение щелкните правой кнопкой мыши узел проекта CalculatorWSApplication и выберите 'Свойства'. Откройте 'Свойства выполнения' и введите /CalculatorWS в поле 'Относительный адрес'. Нажмите кнопку "ОК". Запустите приложение (повторно щелкните правой кнопкой мыши узел проекта и выберите 'Выполнить').

Для проверки успешности развертывания на сервере GlassFish или WebLogic выполните следующие действия.

  1. Щелкните проект правой кнопкой мыши и выберите команду "Развернуть". Запускается сервер приложений, выполняется сборка и развертывание приложения на сервере приложений. За ходом выполнения этих операций можно наблюдать в приложении CalculatorWSApplication (запуск-развертывание) и на вкладках серверов GlassFish или Tomcat в окне вывода.
  2. На вкладке "Проекты IDE" разверните узел "Веб-службы" проекта "CalculatorWSApplication". Щелкните правой кнопкой мыши узел "CalculatorWS" и выберите "Тестировать веб-службу".
    Вкладка 'Проекты', на которй отображается параметр контекстного меню 'Тестирование веб-службы'

    Страница тестирования открывается в браузере, если веб-приложение развернуто на сервере GlassFish. В случае использования веб-сервера Tomcat и развертывания модулей EJB ситуация отличается:

    • Если развертывание выполнялось на GlassFish, введите на странице тестирования два числа, как показано ниже:
      Страница средства тестирования веб-службы при успешном развертывании службы на сервере GlassFish

      Отображается сумма этих двух чисел:


      Веб-страница, на которой отображается результат тестирования веб-службы

Примеры

Можно открыть полную версию компонента сеанса Java EE без сохранения состояния службы Calculator. Для этого выберите Файл > Создать проект (Ctrl-Shift-N в Linux и Windows, ⌘ + Shift + N в MacOS) и перейдите в раздел Образцы > Веб-службы Java > Calculator (EE6).

Служба и клиент калькулятора Maven доступны в пункте "Примеры > Maven".

Использование веб-службы

После успешного развертывания веб-службы необходимо создать клиент для использования метода веб-службы add. Ниже будет рассмотрено создание трех клиентов: класса Java в приложении для Java SE, сервлета и страницы JSP в веб-приложении.

Примечание. Более расширенный учебный курс сосредоточен на клиентах: Разработка клиентов веб-служб JAX-WS.

Клиент 1: класс Java в приложении для Java SE

В этом разделе будет рассмотрено создание стандартного приложения Java. Мастер, используемый для создания приложения, также создает и класс Java. Затем средства среды IDE будут использоваться для создания клиента и использования веб-службы, созданной в начале этого руководства.

  1. Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N в Windows и Linux, ⌘-Shift-N в ОС Mac). Выберите "Приложение Java" в категории "Java". Присвойте проекту имя CalculatorWS_Client_Application. Не снимайте флажок "Создать главный класс" и оставьте все прочие значения по умолчанию. Нажмите кнопку 'Готово'.
  2. Щелкните правой кнопкой мыши узел CalculatorWS_Client_Application и выберите "Создать > Клиент веб-службы". Появится мастер создания клиента веб-службы.
  3. Выберите проект в виде исходного файла WSDL. Нажмите кнопку "Обзор". В проекте CalculatorWSApplication перейдите к веб-службе CalculatorWS. Выберите веб-службу и нажмите кнопку "ОК".
    Диалоговое окно 'Обзор веб-служб', в котором отображается служба CalculatorWS
  4. Не выбирайте имя пакета. Оставьте это поле пустым.
    Мастер создания веб-служб, в котором отображается имя пакета
  5. Оставьте значения остальных параметров по умолчанию и нажмите кнопку "Готово".

    В окне "Проекты" появится новый клиент веб-службы с узлом для созданного методаadd:


    Новый клиент веб-службы в приложении Java SE, отображаемый в окне 'Проекты'
  6. Дважды щелкните главный класс, чтобы открыть его в редакторе исходного кода. Перетащите узел add в местоположение ниже метода main().
    Перетаскивание операции добавления в тело основного класса

    На экране должны быть представлены следующие параметры:

    public static void main(String[] args) {
        // TODO code application logic here
    }
    private static int add(int i, int j) {
        org.me.calculator.CalculatorWS_Service service = new org.me.calculator.CalculatorWS_Service();
        org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
        return port.add(i, j);
    }

    Примечание. В качестве альтернативы, вместо перетаскивания узла add можно щелкнуть правой кнопкой мыши в редакторе, а затем выбрать 'Вставить код' > 'Dspdfnm операцию с веб-службой'.

  7. В теле метода main() замените комментарий TODO кодом, который инициализирует значения для i и j, вызывает add() и распечатывает результат.
    public static void main(String[] args) {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result); }
  8. Окружите код метода main() блоком try/catch, который распечатывает исключение.
    public static void main(String[] args) {
    try {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result);
    } catch (Exception ex) {
    System.out.println("Exception: " + ex);
    } }
  9. Щелкните правой кнопкой мыши узел проекта и выберите "Выполнить".

    Теперь в окне "Вывод" отображается сумма:

        compile:
        run:
        Result = 7
          BUILD SUCCESSFUL (total time: 1 second)

Клиент 2: сервлет в веб-приложении

В этом разделе будет рассмотрено создание нового веб-приложения и последующее создание сервлета. Затем этим сервлетом будет использоваться веб-служба, созданная в начале данного учебного курса.

  1. Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N в Windows и Linux, ⌘-Shift-N в ОС Mac). Выберите "Веб-приложение" в категории "Java Web". Дайте проекту имя CalculatorWSServletClient. Нажмите кнопку "Далее", а затем нажмите кнопку "Готово".
  2. Щелкните правой кнопкой мыши узел CalculatorWSServletClient и выберите "Создать > Клиент веб-службы".

    Появится мастер создания клиента веб-службы.

  3. В качестве источника WSDL выберите "Проект" и нажмите кнопку "Обзор", чтобы открыть диалоговое окно "Обзор веб-служб".
  4. В проекте CalculatorWSApplication выберите веб-службу CalculatorWS. Нажмите кнопку OK, чтобы закрыть диалоговое окно "Обзор веб-служб".
    Диалоговое окно 'Обзор веб-служб', в котором отображается служба CalculatorWS
  5. Оставьте поле "Имя пакета" в мастере создания клиентов веб-службы пустым и не меняйте значения всех остальных параметров, заданные по умолчанию. Нажмите "Готово".

    Узел "Ссылки на веб-службу" в окне "Проекты" отражает структуру только что созданного клиента, включая операцию add, рассмотренную ранее в этом учебном курсе.

  6. Щелкните правой кнопкой мыши узел проекта CalculatorWSServletClient и выберите "Создать > Сервлет". Дайте сервлету имя ClientServlet и поместите его в пакет с именем org.me.calculator.client. Нажмите кнопку 'Готово'.
  7. Чтобы сделать сервлет точкой ввода в приложении щелкните правой кнопкой мыши узел проекта CalculatorWSServletClient и выберите 'Свойства'. Откройте "Свойства выполнения" и введите /ClientServlet в поле "Относительный адрес". Нажмите кнопку "ОК".
  8. При наличии значков ошибок для ClientServlet.java щелкните правой кнопкой мыши узел проекта и выберите 'Очистка и сборка'.
  9. В методе processRequest() добавьте несколько пустых строк после следующей строки:
        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
  10. В редакторе исходного кода перетащите операцию add в любое место тела класса ClientServlet. Метод add() отображается в конце кода класса.

    Примечание. В качестве альтернативы, вместо перетаскивания узла add можно щелкнуть правой кнопкой мыши в редакторе, а затем выбрать 'Вставить код' > 'Dspdfnm операцию с веб-службой'.

    private int add(int i, int j) {
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    return port.add(i, j); }
  11. Добавьте код, который инициализирует значения для i и j, вызывает add() и распечатывает результат. Добавленный код выделяется полужирным начертанием:
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ClientServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
    
            int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result);
    out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  12. Окружите добавленный код блоком try/catch, который распечатывает исключение.
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ClientServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
            try {
                int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result); } catch (Exception ex) { out.println("Exception: " + ex); } out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  13. Щелкните правой кнопкой мыши узел проекта и выберите "Выполнить".

    Запускается сервер, выполняются сборка и развертывание приложения, и открывается браузер, в котором отображается результат вычисления, как показано ниже:
    Новый клиент веб-службы в сервлете, отображаемый в окне 'Проекты'

Клиент 3: страница JSP в веб-приложении

В этом разделе описана процедура создания нового веб-приложения и использование веб-службы на странице JSP по умолчанию, созданной с помощью мастера "Веб-приложение".

Примечание. Если необходимо запустить клиент веб-приложения JSP в Oracle WebLogic см. Запуск приложения Java Server Faces 2.0 в WebLogic.

  1. Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N в Windows и Linux, ⌘-Shift-N в ОС Mac). Выберите "Веб-приложение" в категории "Java Web". Дайте проекту имя CalculatorWSJSPClient. Нажмите кнопку "Далее", а затем нажмите кнопку "Готово".
  2. Раскройте узел "Веб-страницы" под узлом проекта и удалите файл index.html.
  3. Щелкните правой кнопкой мыши узел Веб-страницы и выберите пункт меню "Создать > JSP".

    Если в меню отсутствует пункт "JSP", выберите "Создать > Другие", затем выберите JSP в категории "Веб" мастера создания файлов.

  4. В качестве имени файла JSP в мастере создания файлов укажите index. Нажмите "Готово".
  5. Щелкните правой кнопкой мыши узел CalculatorWSJSPClient и выберите "Создать > Клиент веб-службы".
  6. Выберите проект в виде исходного файла WSDL. Нажмите кнопку "Обзор". В проекте CalculatorWSApplication перейдите к веб-службе CalculatorWS. Выберите веб-службу и нажмите кнопку "ОК".
    Диалоговое окно 'Обзор веб-служб', в котором отображается служба CalculatorWS
  7. Не выбирайте имя пакета. Оставьте это поле пустым.
  8. Оставьте значения остальных параметров по умолчанию и нажмите кнопку "Готово".

    В окне "Проекты" появится новый клиент веб-службы, как показано ниже:

    Новый клиент веб-службы в сервлете, отображаемый в окне 'Проекты'
  9. В узле "Ссылки на веб-службы" разверните узел, соответствующий веб-службе. Теперь показана операция add, которую требуется вызывать посредством клиента.
  10. Перетащите операцию add на страницу клиента index.jsp ниже тегов H1. Теперь на странице index.jsp отображается код для вызова операции службы, показанный ниже:
    <%
    try {
        org.me.calculator.CalculatorWSService service = new org.me.calculator.CalculatorWSService();
        org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
         // TODO initialize WS operation arguments here
        int i = 0;
        int j = 0;
        // TODO process result here
        int result = port.add(i, j);
        out.println("Result = "+result);
    } catch (Exception ex) {
        // TODO handle custom exceptions here
    }
    %>

    Измените значения для i и j с 0 на другие целые числа, например, на 3 и 4. В блоке "catch" замените закомментированную строчку "TODO" на out.println("exception" + ex);.

  11. Щелкните правой кнопкой мыши узел проекта и выберите "Выполнить".

    Запускается сервер, если он не был запущен ранее. После сборки и развертывания приложения открывается браузер, в котором отображается результат вычисления:

    Страница JSP, на которой отображается результат


Дополнительные сведения

Подробнее об использовании IDE NetBeans для разработки приложений Java EE см. в следующих ресурсах:

Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans присоединяйтесь к списку рассылки .

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo