Интерфейс 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.
Цель этого упражнения состоит в создании проекта в соответствии с используемым контейнером развертывания. После создания проекта будет создана веб-служба.
Выбор контейнера
Веб-служба может быть развернута в веб-контейнере или в контейнере EJB. Это зависит от конкретной реализации. Например, если развертывание планируется на веб-сервере Tomcat, предоставляющем только веб-контейнер, следует создавать веб-приложение, а не модуль EJB.
Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web" или "EJB Module" в категории "Enterprise".
Присвойте проекту имя CalculatorWSApplication.
В зависимости от используемого сервера развертывания, выполните следующее:
При использовании GlassFish выберите "Java EE 5" в поле "Java EE Version".
При использовании веб-сервера Tomcat удалите флажок "Set Source Level to 1.4".
Перейдите по остальным страницам и нажмите кнопку "Finish".
Создание веб-службы из класса Java
Щелкните правой кнопкой мыши узел CalculatorWSApplication и выберите "New > Web Service".
Присвойте веб-службе имя CalculatorWS, введите org.me.calculator в поле "Package" и нажмите кнопку "Finish".
В окне "Projects" отображается структура новой веб-службы, а в области изменения отображается Visual Designer. Например, для веб-приложений экран должен выглядеть следующим образом:
Проектирование веб-службы
Целью этого упражнения является выполнение важных операций с файлами и кодом, созданными в среде IDE. Далее будет выполнена операция сложения двух чисел, полученных от клиента.
Добавление бизнес-логики к веб-службе
Нажмите кнопку "Add Operation" в Visual Designer. Появится диалоговое окно, в котором можно определить новую операцию.
В верхней части диалогового окна "Add Operation" введите add в поле "Name" и int в раскрывающемся списке "Return Type". В нижней части диалогового окна "Add Operation" нажмите кнопку "Add" и создайте параметр типа int с именем i. Далее нажмите кнопку "Add" еще раз и создайте параметр типа int с именем j.
Экран должен выглядеть следующим образом:
Нажмите кнопку "OK" в нижней части диалогового окна "Add Operation".
Теперь в Visual Designer отображается следующее:
Нажмите кнопку "Source" и обратите внимание, что созданный выше исходный код теперь выглядит следующим образом:
В редакторе расширьте скелетную операцию 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 недоступны.
Для тестирования развертывания в веб-контейнере:
Щелкните правой кнопкой мыши проект и выберите "Run".
Выполняется запуск сервера приложений, сборка приложения и открытие обозревателя.
Разверните узел "Web Services", щелкните правой кнопкой мыши узел требуемой веб-службы и выберите "Test Web Service".
Если веб-приложение было развернуто на GlassFish, в обозревателе откроется страница тестирования. Иначе при использовании веб-сервера Tomcat и развертывании модулей EJB:
Если развертывание выполнялось на GlassFish, введите на странице тестирования два числа, как показано ниже:
Отображается сумма этих двух чисел:
Если развертывание выполнялось на веб-сервере Tomcat, успешное выполнение операции будет обозначено следующим образом:
Щелкните правой кнопкой мыши узел проекта, выберите "Properties" и нажмите кнопку "Run". В зависимости от используемого сервера развертывания, выполните следующее:
Для GlassFish введите /CalculatorWSService?Tester в поле "Relative URL".
Для веб-сервера Tomcat введите /CalculatorWS?Tester в поле "Relative URL"
Примечание: Поскольку результат развертывания модуля EJB в обозревателе не отображается, выполнить последнее действие при работе с модулем EJB невозможно.
Использование веб-службы
После успешного развертывания веб-службы необходимо создать клиент для использования метода веб-службы add. Ниже будет рассмотрено создание трех клиентов: класса Java в приложении для Java SE, сервлета и страницы JSP в веб-приложении.
В этом разделе будет рассмотрено создание стандартного приложения на Java. Мастер, используемый для создания приложения, создает также класс Java. Затем веб-служба, созданная в начале этого руководства, будет использоваться при помощи средств среды IDE.
Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Java Application" в категории "Java". Присвойте проекту имя CalculatorWS_Client_Application. Не снимайте флажок "Create Main Class" и оставьте все прочие значения по умолчанию. Нажмите кнопку "Finish".
При использовании 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".
Щелкните правой кнопкой мыши узел CalculatorWS_Client_Application и выберите "New > Web Service Client".
В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".
В окне "Projects" появится новый клиент веб-службы с узлом для созданного метода add:
Дважды щелкните элемент 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".
Задайте два значимых целых числа (например, 3 и 4). Это могут быть значения любых целых чисел больше нуля.
Щелкните правой кнопкой мыши узел проекта и выберите "Run".
В этом разделе будет рассмотрено создание нового веб-приложения и последующее создание сервлета. Затем этим сервлетом будет использоваться веб-служба, созданная в начале этого руководства.
Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web". Присвойте проекту имя CalculatorWSServletClient. Нажмите кнопку "Finish".
Щелкните правой кнопкой мыши узел CalculatorWSServletClient и выберите "New > Web Service Client".
Появится мастер "New Web Service Client".
В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".
Узел "Web Service References" в окне "Projects" отражает структуру созданного клиента, включая операцию add, рассмотренную выше в этом руководстве:
Щелкните правой кнопкой мыши узел проекта CalculatorWSServletClient и выберите "New > Servlet". Присвойте сервлету имя ClientServlet и поместите его в пакет с именем org.me.calculator.client. Нажмите кнопку "Finish".
Чтобы сделать сервлет точкой входа приложения, щелкните правой кнопкой мыши узел проекта, выберите "Properties", нажмите кнопку "Run" и введите /ClientServlet в поле "Relative URL". Нажмите кнопку "OK".
В редакторе исходного кода удалите строку с комментарием в теле метода 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.
Щелкните правой кнопкой мыши узел проекта и выберите "Run".
Запускается сервер (если он не был запущен ранее); после сборки и развертывания приложения открывается обозреватель, в котором отображается результат вычисления, как показано ниже:
Клиент 3: страница JSP в веб-приложении
В этом разделе описана процедура создания нового веб-приложения и использование веб-службы на странице JSP по умолчанию, созданной с помощью мастера "Web Application".
Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web". Присвойте проекту имя CalculatorWSJSPClient. Нажмите кнопку "Finish".
Щелкните правой кнопкой мыши узел CalculatorWSJSPClient и выберите "New > Web Service Client".
В окне "Project" нажмите кнопку "Browse". Перейдите к веб-службе, которую необходимо использовать. Выберите веб-службу и нажмите кнопку "OK".
Оставьте остальные параметры настройки по умолчанию (в 6.0.x не указывайте имя пакета) и нажмите кнопку "Finish".
В окне "Projects" появится новый клиент веб-службы, как показано ниже:
В узле "Web Service References" разверните узел, представляющий веб-службу. Теперь показана операция add, которую требуется вызывать посредством клиента.
Перетащите операцию 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.
Щелкните правой кнопкой мыши узел проекта и выберите "Run".
Запускается сервер (если он не был запущен ранее); после сборки и развертывания приложения открывается обозреватель, в котором отображается результат вычисления:
Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для Java EE с помощью среды IDE NetBeans можно в списке рассылки .