На рынке доступно множество платформ для разработки веб-сервисов на основе платформы Java. Однако большинство из этих платформ соответствуют спецификации JAX-WS (JSR-000224). Эта серия будет посвящена официальной эталонной реализации JAX-WS, разработанной Metro Community в Oracle (ранее известной как Sun).
Начало работы с разработкой простого веб-сервиса
Требуется программное обеспечение:
- Java SE 1.6 и выше
- Реализация JAX-WS Reference 2.2.5 (доступна здесь )
- Apache Tomcat версии 6 и выше.
Веб-сервис может быть разработан двумя способами,
1. Нисходящий подход
При таком подходе сначала создается интерфейс службы, а реализация предоставляется позднее.
2. Подход снизу вверх
При таком подходе сначала создается реализация службы, и на ее основе определяется интерфейс. Этот подход прост для новичков, которые плохо знакомы с веб-сервисами.
Мы следуем второму подходу, то есть подходу «снизу вверх» для простоты и более быстрого готового рабочего примера.
Что делать?
Создайте класс POJO (простой старый объект Java) и аннотируйте его с помощью WebService, как указано ниже
Это делает java-класс веб-сервисом с именем «SimpleWebService». Мы можем добавить необходимую функциональность в класс, чтобы служба могла служить какой-то цели.
Давайте добавим метод, который принимает в качестве входных данных имя String и возвращает сообщение «привет».
Теперь у веб-службы есть задача, и доступная операция делает это: вы передаете имя («веб-служба»), и оно возвращает приветственное сообщение с указанным именем («Здравствуйте, веб-служба!»).
Вот и все. Веб-сервис готов к развертыванию.
Вы можете развернуть это двумя способами,
1. Автономное развертывание. При таком подходе вам просто нужно иметь основной метод и вызывать Endpoint.publish (url, provider) . Это упоминается ниже. Это создает среду выполнения веб-службы, которая поставляется с Java SE 6, и развертывает ее на облегченном http-сервере. Сервис доступен по URL-адресу, указанному как входные данные для метода публикации.
2. Развертывание в сервлет-контейнере. При таком подходе мы можем развернуть веб-сервис, создав стандартный файл .war веб-приложения java и развернув его на веб-сервере, который имеет поддержку контейнера сервлетов, например Tomcat или Jetty. , Этот подход объясняется ниже с использованием Apache Tomcat версии 6.
1. Убедитесь, что вы загрузили и распаковали эталонную реализацию JAX-WS (доступна здесь ).
2. Убедитесь, что вы скачали и установили Apache Tomcat версии 6.
3. Задайте для переменной среды JAVA_HOME указатель на папку установки JDK 1.6 или выше.
4. Создайте стандартное веб-приложение на Java с вашей любимой IDE (например, Eclipse или NetBeans).
5. Создайте / измените дескриптор развертывания веб-приложения (web.xml) со следующим содержимым.
WSServletContenxtListener:
Упомянутый выше класс слушателя ( com.sun.xml.ws.transport.http.servlet.WSServletContextListener ) является прослушивателем контекста веб-службы, который инициализирует контекст веб-службы при инициализации контекста приложения и создает делегат веб-службы, который используется. делегировать все будущие запросы веб-сервисов и направлять их к соответствующей реализации конечной точки, определенной в файле sun-jaxws.xml, указанном ниже. Это сохраняет созданный делегат в контексте сервлета контейнера, так что к делегату могут обращаться другие сервлеты.
WSServlet:
Определение сервлета и его отображение используется для перехвата шаблона url, который следует рассматривать как запрос веб-службы.
Класс ( com.sun.xml.ws.transport.http.servlet.WSServlet ) действует как диспетчер отправки, который направляет запрос в соответствующий класс реализации через делегат, полученный из контекста сервлета, созданного слушателем, как указано выше.
6. Создайте другой требуемый дескриптор развертывания веб-службы ( sun-jaxws.xml ) в папке WEB-INF. Этот файл необходим эталонной реализации JAX-WS для сопоставления класса реализации сервиса с интерфейсом сервиса. Содержание этого файла упомянуто ниже.
Дескриптор sun-jaxws.xml. Каждое определение конечной точки в этом дескрипторе указывает имя веб-службы, класс реализации и шаблон URL-адреса, который маршрутизирует к этому вызову веб-службы. Это читается прослушивателем контекста и передается созданному им делегату веб-службы, чтобы делегат знал, какой класс реализации вызывать при поступлении запроса веб-службы.
7. Скопируйте библиотеки, доступные в <JAX-WS_INSTALL_DIR> / lib, в папку WEB-INF / lib.
8. Убедитесь, что файл класса веб-сервиса скопирован в WEB-INF / classes согласно структуре пакета.
9. Теперь создайте файл war и скопируйте его в папку <TOMCAT_INSTALL_DIR> / webappas и запустите Tomcat.
Вот и все. Пожалуйста, проверьте логи запуска tomcat, чтобы убедиться, что приложение развернуто правильно, без каких-либо ошибок.
Убедившись, что сервер запущен без ошибок, мы можем получить доступ к развернутой веб-службе по адресу http: // localhost: 8080 / SimpleWebService / SimpleWebService
WSDL для развернутой веб-службы доступен по адресу http: // localhost: 8080 / SimpleWebService / SimpleWebService? Wsdl
В следующей статье мы узнаем, что такое WSDL и как он используется потребителями веб-служб для создания клиента веб-службы и доступа к веб-службе.
Проект исходного кода Eclipse Indigo для этой статьи можно скачать здесь .
С http://www.accordess.com/wpblog/2011/12/28/working-with-jax-ws-web-services-part-1/