Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РИС шпоры для печати.docx
Скачиваний:
29
Добавлен:
31.05.2022
Размер:
1.01 Mб
Скачать

51. Технология Web – сервисов на основе Java api for xml Web Services (jax-ws). Пример кода реализации. Ксюша

Java API для XML веб-сервисов (JAX-WS) - технология для создания веб-сервисов и клиентов, которые взаимодействуют с использованием XML. JAX-WS позволяет разработчикам создавать веб-сервисы, ориентированные на передачу сообщений, а также на удалённый вызов процедур (RPC).

В JAX-WS (Java API for XML Web Services (JAX-WS) ) вызов операции веб-сервиса представлен протоколом SOAP — протоколом на основе XML. Спецификация SOAP определяет структуру сообщения, правила кодирования и соглашения для представления вызовов и ответов веб-сервиса. Эти вызовы и ответы передаются как сообщения SOAP (файлы XML) по HTTP.

На стороне сервера разработчик специфицирует операции веб-сервиса, определяя методы в интерфейсе, написанном на Java. Разработчик также кодирует классы с реализацией этих методов. Клиентские программы также легко кодируются. Клиент создает прокси (локальный объект, представляющий сервис), а затем просто вызывает методы на прокси.

С JAX-WS разработчик не генерирует и не анализирует сообщения SOAP. Среда выполнения JAX-WS преобразует вызовы API и ответы в сообщения SOAP и обратно.

Благодаря JAX-WS клиенты и веб-сервисы имеют большое преимущество: независимость от платформы Java. Кроме того, JAX-WS не ограничивает ни одну из сторон в используемых технологиях: клиент JAX-WS может получить доступ к веб-сервису, который не работает в платформе Java, и наоборот. Эта гибкость возможна благодаря использованию в JAX-WS технологий, определённых W3C: HTTP, SOAP и WSDL. WSDL определяет формат XML для описания сервиса как набора конечных точек, работающих с сообщениями.

Конечные точки JAX-WS должны соответствовать этим требованиям.

·Реализующий класс должен быть аннотирован WebService или WebServiceProvider.

·Реализующий класс может явно ссылаться на SEI через элемент endpointInterface аннотации @WebService, но не обязательно. Если endpointInterface не указан в @WebService, SEI неявно определяется для реализующего класса.

·Бизнес-методы реализующего класса должны быть публичными и не должны объявляться static или final.

·Бизнес-методы, предоставляемые клиентам веб-сервисов, должны быть аннотированы WebMethod.

·Бизнес-методы, предоставляемые клиентам веб-сервисов, должны иметь JAXB-совместимые параметры и типы возвращаемых данных.

·Реализующий класс не должен быть объявлен final и не должен быть abstract.

·Реализующий класс должен иметь публичный конструктор по умолчанию.

·Реализующий класс не должен определять метод finalize.

·Реализующий класс может использовать аннотации PostConstruct или PreDestroy в своих Callback-методах событий жизненного цикла.

Пример.

@WebService

public class Hello { private final String message = "Hello, ";

public Hello() {// public конструктор, по умолчанию, без аргументов}

@WebMethod

public String sayHello(String name) {return message + name + "."; }

public static void main(String[] args) { System.out.println(sayHello("world"));}