corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Начало работы с веб-службами JAX-WS

Интерфейс API Java для веб-служб XML (JAX-WS) 2.0/2.1, JSR 224 является важной частью платформы Java EE 5. Следующий выпуск интерфейса 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 6.0 и 6.1

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

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans Web & Java EE, версия 6.1 или 6.0
Комплект для разработчика на языке Java (JDK) версия 6 или
версия 5
Веб-сервер или сервер приложений, совместимый с Java EE Веб-сервер Tomcat 6.0 и/или
Сервер приложений GlassFish v2

Серверы Tomcat и GlassFish могут быть установлены при помощи дистрибутива "Web and Java EE" среды IDE NetBeans. Также можно воспользоваться страницей загрузок GlassFish или страницей загрузок Apache Tomcat.

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

Цель этого упражнения состоит в создании проекта в соответствии с используемым контейнером развертывания. После создания проекта будет создана веб-служба.

Выбор контейнера

Веб-служба может быть развернута в веб-контейнере или в контейнере EJB. Это зависит от конкретной реализации. Например, если развертывание планируется на веб-сервере Tomcat, предоставляющем только веб-контейнер, следует создавать веб-приложение, а не модуль EJB.

  1. Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web" или "EJB Module" в категории "Enterprise".
  2. Присвойте проекту имя CalculatorWSApplication.
  3. В зависимости от используемого сервера развертывания, выполните следующее:
    • При использовании GlassFish выберите "Java EE 5" в поле "Java EE Version".
    • При использовании веб-сервера Tomcat удалите флажок "Set Source Level to 1.4".
  4. Перейдите по остальным страницам и нажмите кнопку "Finish".

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

  1. Щелкните правой кнопкой мыши узел CalculatorWSApplication и выберите "New > Web Service".
  2. Присвойте веб-службе имя CalculatorWS, введите org.me.calculator в поле "Package" и нажмите кнопку "Finish".

    В окне "Projects" отображается структура новой веб-службы, а в области изменения отображается Visual Designer. Например, для веб-приложений экран должен выглядеть следующим образом:


    Окно "Projects" с веб-службой

Проектирование веб-службы

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

Добавление бизнес-логики к веб-службе

  1. Нажмите кнопку "Add Operation" в Visual Designer. Появится диалоговое окно, в котором можно определить новую операцию.
  2. В верхней части диалогового окна "Add Operation" введите add в поле "Name" и int в раскрывающемся списке "Return Type". В нижней части диалогового окна "Add Operation" нажмите кнопку "Add" и создайте параметр типа int с именем i. Далее нажмите кнопку "Add" еще раз и создайте параметр типа int с именем j.

    Экран должен выглядеть следующим образом:


    Диалоговое окно "Add Operation"
  3. Нажмите кнопку "OK" в нижней части диалогового окна "Add Operation".

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


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

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

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

При развертывании веб-службы в веб-контейнере ее можно протестировать для проверки правильности функционирования. Для этого в среду IDE интегрировано приложение "Tester", предоставляемое GlassFish. Аналогичное средство существует и для веб-сервера Tomcat. Однако при его использовании (в отличие от приложения GlassFish "Tester") ввод и тестирование значений невозможны. Можно только проверить, что выполнено развертывание веб-службы, но протестировать конкретные значения нельзя. В настоящее время средства для проверки развертывания модуля EJB недоступны.

Для тестирования развертывания в веб-контейнере:

  1. Щелкните правой кнопкой мыши проект и выберите "Run".

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

  2. Разверните узел "Web Services", щелкните правой кнопкой мыши узел требуемой веб-службы и выберите "Test Web Service".

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

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

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


      Веб-страница с результатами тестирования веб-службы
    • Если развертывание выполнялось на веб-сервере Tomcat, успешное выполнение операции будет обозначено следующим образом:
      Веб-страница при успешном развертывании на сервере Tomcat
    • Щелкните правой кнопкой мыши узел проекта, выберите "Properties" и нажмите кнопку "Run". В зависимости от используемого сервера развертывания, выполните следующее:
      • Для GlassFish введите /CalculatorWSService?Tester в поле "Relative URL".
      • Для веб-сервера Tomcat введите /CalculatorWS?Tester в поле "Relative URL"

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

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

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

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

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

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

  1. Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Java Application" в категории "Java". Присвойте проекту имя CalculatorWS_Client_Application. Не снимайте флажок "Create Main Class" и оставьте все прочие значения по умолчанию. Нажмите кнопку "Finish".
  2. При использовании IDE NetBeans 6.0.x следует изменить свойства проекта CalculatorWS_Client_Application. Щелкните правой кнопкой мыши узел проекта и выберите "Properties". Откроется диалоговое окно "Project Properties". Следующее действие зависит от используемого JDK:
    • С более ранним JDK, чем JDK 6 Update 4, следует выбрать категорию "Libraries" и импортировать библиотеки JAX-WS и JAXB.
    • С JDK 6 Update 4 или выше следует выбрать категорию "Run" и удалить "VM Option".
  3. Щелкните правой кнопкой мыши узел CalculatorWS_Client_Application и выберите "New > Web Service Client".
  4. В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
  5. Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".

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


    Окно "Projects" с новым клиентом веб-службы в приложении для Java SE
  6. Дважды щелкните элемент Main.java для его открытия в редакторе исходного кода. Удалите комментарий TODO и перетащите узел add выше в пустую строку. Экран должен выглядеть следующим образом:
    public static void main(String[] args) {
    
        try { // Call Web Service Operation
            org.me.calculator.CalculatorWSService service = new org.me.calculator.client.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);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
    
                    }

    Примечание: Вместо перемещения узла add можно щелкнуть правой кнопкой мыши в редакторе и затем выбрать "Web Service Client Resources > Call Web Service Operation".

  7. Задайте два значимых целых числа (например, 3 и 4). Это могут быть значения любых целых чисел больше нуля.
  8. Щелкните правой кнопкой мыши узел проекта и выберите "Run".

    Теперь в окне "Output" должна отобразиться сумма:

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

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

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

  1. Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web". Присвойте проекту имя CalculatorWSServletClient. Нажмите кнопку "Finish".
  2. Щелкните правой кнопкой мыши узел CalculatorWSServletClient и выберите "New > Web Service Client".

    Появится мастер "New Web Service Client".

  3. В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
  4. Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".
  5. Узел "Web Service References" в окне "Projects" отражает структуру созданного клиента, включая операцию add, рассмотренную выше в этом руководстве:


    Окно "Projects" с новым клиентом веб-службы в сервлете
  6. Щелкните правой кнопкой мыши узел проекта CalculatorWSServletClient и выберите "New > Servlet". Присвойте сервлету имя ClientServlet и поместите его в пакет с именем org.me.calculator.client. Нажмите кнопку "Finish".
  7. Чтобы сделать сервлет точкой входа приложения, щелкните правой кнопкой мыши узел проекта, выберите "Properties", нажмите кнопку "Run" и введите /ClientServlet в поле "Relative URL". Нажмите кнопку "OK".
  8. В редакторе исходного кода удалите строку с комментарием в теле метода processRequest. Строка имеет следующий вид:
        /* TODO output your page here

    Затем удалите строку, которой заканчивается раздел закомментированного кода:

        */

    После этой строки добавьте несколько пустых:

        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");

    Теперь переместите на образовавшееся место узел, представляющий операцию add.

    Теперь метод processRequest выглядит следующим образом (добавленный код выделен ниже полужирным шрифтом):

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            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 { // Call Web Service Operation
                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
            }
    
            out.println("</body>");
            out.println("</html>");
            out.close();
                        }

    Измените значение i и j на положительные значимые числа, например, на 3 и 4.

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

    Запускается сервер (если он не был запущен ранее); после сборки и развертывания приложения открывается обозреватель, в котором отображается результат вычисления, как показано ниже:
    Окно "Projects" с новым клиентом веб-службы в сервлете

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

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

  1. Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web". Присвойте проекту имя CalculatorWSJSPClient. Нажмите кнопку "Finish".
  2. Щелкните правой кнопкой мыши узел CalculatorWSJSPClient и выберите "New > Web Service Client".
  3. В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
  4. Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".

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


    Окно "Projects" с новым клиентом веб-службы в сервлете
  5. В узле "Web Service References" разверните узел, представляющий веб-службу. Теперь показана операция add, которую требуется вызывать посредством клиента.
  6. Перетащите операцию 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.

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

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


    Страница JSP с результатом


Дополнительная информация

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

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

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems