Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB Малышкин Фёдор (fedor.malyshkin@magnetosoft.ru)fedor.malyshkin@magnetosoft.ru 9 ноября.

Презентация:



Advertisements
Похожие презентации
Рассматриваемые темы Введение в Web Services EJB и Web Services 2-1.
Advertisements

Web - сервисы. Веб-служба, веб-сервис (англ. web service) идентифицируемая веб-адресом программная система со стандартизированными интерфейсами.англ.веб-адресоминтерфейсами.
WEB- ТЕХНОЛОГИИ Лекция 6. Понятие Web- сервисов 1 Интерфейс в глобальную сеть для некоторого абстрактного программного обеспечения, этот интерфейс позволяет.
Использование AJAX для асинхронной передачи данных. Что такое AJAX. Как использовать. В чем преимущество. Примеры использования на крупных сайтах. Выполнила:
SOAP Содержание лекции Протокол SOAP. Структура SOAP-сообщения: конверт, заголовок, тело сообщения. Стандарты WS-Addressing и WS-Security. SOAP-Fault.
Реализация концепции построения и формирования отраслевой системы государственного учета, регистрации и мониторинга (ОСГУРМ) информационных ресурсов сферы.
Асинхронное взаимодействие Java Execution Framework Сравнение производительности Асинхронные вызовы в Glassfish Кислин Григорий.
Web-службы SOAP, WSDL, UDDI, GXA среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
ДонНУ, кафедра КТ, проф.В.К.Толстых Web-службы (Web-сервисы) введение введение Разработка в среде Delphi Из цикла лекций «Internet-технологии разработки.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Проектирование клиент-серверных информационных систем Южно-Уральский государственный университет Факультет «Экономика и предпринимательство» Кафедра «ИНФОРМАЦИОННЫЕ.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
1 Концепция Web 2.0 Пользователи становятся активными участниками работы сети. Мы наполняем сеть информацией, сами её организуем, сами определяем параметры.
1 Диаграммы реализации (implementation diagrams).
1 ИССЛЕДОВАНИЕ ВОЗМОЖНОСТЕЙ COM- ТЕХНОЛОГИИ ДЛЯ ПОСТРОЕНИЯ РАСПРЕДЕЛЕННЫХ ПРОГРАММНЫХ ПРОДУКТОВ Component Object Model Министерство образования и науки.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Пользовательские действия (custom actions) в JSP. JSTL.
Архитектура метаданных WWW. Язык RDF Архитектура метаданных WWW RDF.
Сериализация В java. Определение Сериализация это процесс сохранения состояния объекта в последовательность байт; Десериализация это процесс восстановления.
Транксрипт:

Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB Малышкин Фёдор 9 ноября 2007

Введение Веб-сервис – это метод коммуникации с использованием огромного количества протоколов и данными в виде структурированного XML. Название пошло от основного протокола передачи, использовавшегося на заре создания технологии – HTTP. Сейчас в качестве протоколов передачи кроме HTTP, могут использоваться JMS (протокол передачи сообщений Java), SMTP, TCP… Даже данные могут передаваться не в виде XML. Так что понятие «веб-сервис» имеет очень расплывчатое значение на сегодняшний день и включает в себя огромное количество понятий. Но разговор будет идти о стандарте описания веб-сервиса – о WSDL…

WSDL WSDL – Web Service Description Language. WSDL является XML словарём, который позволяет описать веб-сервис в языке независимом от платформы и от реализации. Данная лекция описывает стандарт WSDL 1.1, который доступен по адресу [TODO].

Логическая структура WSDL

Элементы WSDL import – позволяет частям веб-сервиса быть распределёнными между несколькими файлами и быть скомпонованными в различной конфигурации в зависимости от потребностей авторов веб-сервиса. Использование данной техники распространено в крупных проектах, многие веб-сервисы имеют общие типы данных и отличаются только в деталях реализации или привязки к протоколу.

Элементы WSDL types – определяет типы используемые веб-сервисами. …..

Элементы WSDL types – определяет типы используемые веб-сервисами.

Элементы WSDL message - описывает данные, которые путешествуют между веб-сервисом и клиентом в терминах, описанных в элементе Types. …

Элементы WSDL portType – определяет опреации, которые веб-сервис обеспечивает. …

Элементы WSDL binding – определяет, как операции и сообщения, описанные в message и portType, привязываются к конкретному протоколу. …

Элементы WSDL service – группирует ранее описанные порты и этим определяет сервис.

Разработка «обычных» веб-сервисов Класс public class UsualWS public String method01(String data) { // парсинг XML // работа над данными String result = результат работы return result; }

Разработка «обычных» веб-сервисов Генерация с помощью WSGEN необходимых артефактов и WSDL Развёртывание И вызов через клиента или другое средство. Например через XMLSpy:

Потери «обычных» веб-сервисов «Обычные» веб-сервисами отличаются от «нормальных» только одним – отсутствием информации о структуре передаваемого XML. Информация о том, что передаётся и в каком виде, должна быть у пользователя веб-сервиса ЗАРАНЕЕ. Использовать веб-сервис без этого не предоставляется возможным.

Пример «стандартного» веб-сервиса Загружаем WSDL «нормального» веб-сервиса в XMLSpy и пробуем вызвать.

Преимущества «стандартных» веб-сервисов Доступ к информации о структуре XML на стадии анализа веб-сервиса. Чёткое описание веб-сервиса на уровне интерфейсов взаимодействия. Возможность генерации клиента другим программистом независимо от автора. Совместимость клиента и сервиса (изменении сервиса в рамках допустимого). Возможность генерации специальных класса для указанных типов, облегчающих работу с XML. Устранение необходимости работы экранирования строк, на наличие служебных символов.

Пример сгенерированного клиента для = "addRouteResponse", targetNamespace = " partName = "response") public AddRouteResponseType = "addRouteRequest", targetNamespace = " partName = "request") AddRouteRequestType request) = "getScaleResponse", targetNamespace = " partName = "response") public ScaleResponseType ( name = "getScaleRequest", targetNamespace = " partName = "request") GetScaleRequest request) throws GetScaleFault;

Пример сгенерированного клиента для «стандартного» веб-сервиса Каждый метод имеет в качестве параметров и возвращаемого результат сгенерированные классы, обрамлённые JAXB аннотациями. При вызове метода классы с наполненными данными преобразуются в XML, а результат из XML разбирается в те же сгенерированные классы. Как результат - необходимость работы с XML, переносящимся между веб-сервисами, отпадает полностью.

Создание « стандартного » веб- сервиса. Вариант 1. Создание WSDL Генерация артефактов с помощью WSIMPORT Создание реализации сгенерированного интерфейса сервиса P.S.: Данный вариант детально не рассматривается, так как требует детального знания языка описания XML – «XML Schema». Именно на его основе сделаны модули «Search», «Catalogue» платформы MAGNET.

Создание « стандартного » веб- сервиса. Вариант 2. Создание классов носителей-данных для обмена. Классы носители-данных для обмена являются обычными JavaBeanами, с аннотациями JAXB, которые определяют в какой XML они превратятся. package edu.sefer.home.ws; import java.math.BigDecimal; import javax.xml.bind.annotation.XmlElement; import public class XmlResult int BigDecimal resultBD; }

Создание « стандартного » веб- сервиса. Вариант 2. package edu.sefer.home.ws; import java.util.Date; import javax.xml.bind.annotation.XmlElement; import public class XmlData String Date int inputInt; }

Создание « стандартного » веб- сервиса. Вариант 2. Создания класса веб-сервиса, подобно обычному подходу, но с входящими и выходящими параметрами в виде классов носителей-данных. package edu.sefer.home.ws; import javax.jws.WebMethod; import public class UsualWS public XmlResult method01(XmlData data) { return null; }

Создание « стандартного » веб- сервиса. Вариант 2. Генерация артефактов с использованием WSGEN, подобно обычному подходу.

Создание « стандартного » веб- сервиса. Вариант 2. Развёртывание и вызов…

Создание « стандартного » веб- сервиса. Вариант 3. Генерация или создание WSDL схемы вручную. Использование интерфейса «javax.xml.ws.Provider» на серверной стороне Использование интерфейса «javax.xml.ws.Dispatch» на клиентской стороне Использование типа «xsd:anyType» для описания ЛЮБОГО XML, если его структура не зафиксирована. P.S.: Данный вариант детально не рассматривается, так как требует детального знания языка описания XML – «XML Schema» и деталей работы соответствующих интерфейсов. Но именно на его основе сделан модуль «EntityManager» платформы MAGNET.

Выводы Варианты 1 и 2 наиболее удобны, если интерфейсы взаимодействия уже оговорены и устоялись. Вариант же 3 позволяет передавать динамически компонуемый XML максимально быстро и использовать его максимально эффективно и гибко. Хотя надо так же заметить, что при использовании некоторых подходов, передавать динамический XML можно и в вариантах 1 и 2. Но надо заметить, что дополнительная нагрузка (на обработку сообщений на уровне самой библиотеки) при этом возрастает многократно.

Вопросы? ?