<Insert Picture Here> Разработка веб-служб при помощи Oracle WebLogic Андрей Забелин Oracle CIS Программа • • • • • • <Insert Picture Here> Архитектура веб-служб Инфраструктура Oracle Web Service Ключевые возможности Средства разработки, Администрирование Выводы Вопросы и ответы <Insert Picture Here> Архитектура веб-служб Веб службы: что это? URL-адрес описания веб-службы UDDI Реестр веб-служб WSDL Поиск веб-службы Клиент веб-службы (JEE,SOA,.NET, PL/SQL , .NET,C/C++, …) URL-адрес веб-службы SOAP/REST Вызовы с передачей информации в формате XML Описание веб-службы веб-служба (JEE, SOA, PL/SQL, .NET,C/C++,…) Спецификации JAX-WS и JAX-RPC WSDL (описание веб-службы) Конечная точка веб-службы Клиент веб-службы Stub WSDL<->Java Mapping Tie Container Dispatch JAX-WS/RPC API JAX-WS/RPC API Runtime System На клиенте Runtime System На сервере Протоколы (SOAP/REST) Транспортный уровень Политики веб-служб Управление и хранение политик Поиск ссылки на политику Обязательное использование политики Поиск ссылки на политику Клиент веб-службы (JEE, .NET, SCA, …) Обязательное использование политики SOAP Security/RM/… WSDL With Policies Описание политик веб-службы веб-служба (JEE, .NET, BPEL, SCA, …) Веб-службы сегодня • Развивающиеся стандарты: – JAX-* – WS-* • Основные пути развития: – – – – – – Удовлетворение требованиям безопасности Увеличение производительности Снижение сложности разработки веб-служб Совместимость SOAP или REST … <Insert Picture Here> Инфраструктура Oracle Web Service Технологии Oracle Fusion Middleware Технологии Oracle Fusion Middleware Миссия Oracle Web Service Семейства спецификаций: • JAX-* • WS-* Стандарты Расширения Oracle WS Совместимость Гарантированная совместимость с: • продуктами Oracle FMW products • продуктами от 3-х производителей Расширения стандартов: • Надёжность • Маштабируемость • Производительность Компоненты Oracle Web Service Oracle WS Infra WS Разработка JDeveloper OEPE SOA WS Политики OWSM policies WLS policies ADF WS WebCenter WS Управление EM WLS WS JEE WS WLS Console Развитие Oracle Web Service WLS 9.x • J2EE 1.4 • JAX-RPC • WS-Policy & WS-Sec • расширения WLS 10.x • JEE 5 • JAX-WS RI • WS-* • Надёжность • Маштабируемость FMW 11gR2 • JEE 6 • объединение стеков • WS-Eventing • JMS Transport • SCA FMW 11gR1 • JEE 5 OAS 10.1.3.x • двойной стек • J2EE 1.4 • OWSM политики • JAX-RPC • полный цикл управления • WS-Reliability & WS-Sec • встроенное связывание Объединение технологий Лучший в своём классе стэк Web Service Oracle WebLogic Server Admin Console Workshop JMS WS-* JAX-RPC JAX-WS RI Лучший сервер приложений WebLogic Server Web Service Admin Console JMS JAX-RPC Workshop WS-* JAX-WS RI Enterprise Manager Asynch WS JAX-RPC JDeveloper WS-* OWSM Лучшая платформа Oracle Oracle Application Server Web Service Enterprise Manager Asynch WS JAX-RPC JDeveloper WS-* OWSM Инфраструктура Oracle Web Services Управление Web сервисами с помощью EM/WLC/WLST WSSecurity WSAddressing HTTP SOAP WSReliable Messaging HTTP REST JMS SOAP WS-AT Разработка Web сервисов с помощью JDeveloper/OEPE MTOM Logging Auditing JAXB Data Binding Asynch Service Декларативное QoS (WS-Policy) JAX-WS SwA Stateful Service WSIF Web Services Java Programming Model – Java EE WebLogic Server <Insert Picture Here> Ключевые возможности Обзор возможностей Стандарты Дополнительные Управление • JAX-* • Надёжность, • Управление веб- • SOAP1.* & WS-Policy • WS-SecurityPolicy • WS-ReliableMessaging • WS-Addressing • WS-SecureConversation • MTOM • WS-AT • REST • JAXB/SDO databinding • WS-I BP/BSP/RSP маштабируемость, производительность • Database web service • JMS transport • XMLBeans databinding • SCA-J • Spring web service • Stateful веб-службы с C*Web • Пользовательские политики службами • Настройка защиты веб- служб • Управление политиками • Управление веб- службами с помощью WLST • Тестирование веб- служб Поддержка стандартов в Weblogic Server JAX-RPC •JAX-RPC data-binding rules •XMLBeans •WS-ReliableMessaging • WS-SecureConversation •WS-Trust •Расширения в WLS •Conversational Web Services •Asynchronous Requestresponse •Callbacks •Buffered Web Services (JMS) •Transport-related Annotations JAX-WS •JSR 181/JSR 109 • WS-Policy 1.5, WSSecurityPolicy 1.2. •WS-Security 1.1, WSSecurityPolicy 1.2 •Smart Policy •SAML Token Profile 1.1 •MTOM with WS-Security •JAXB for data-binding •Woodstox StAX Parser 3.2.4 •WS-Security 1.1, WSSecurityPolicy 1.2 •OWSM security policy •OASIS XML Catalog v1.1 support •WS-ReliableMessaging •WS-SecureConversation •WS-Trust Защита веб-служб Сообщение SOAP JAX-WS клиент Клиент WS-Security Sign Check Signature Encrypt Add Auth Token Transport HTTP Запрос Сервер WS-Security Check Auth Decrypt Token Check Signature Отклик Decrypt • Управление доступом Encrypt Сообщение SOAP JAX-WS конечная точка Sign • Поставляемые политики: • Конфиденциальность сообщений • WLS policies • Сохранность сообщений • OWSM policies • Невозможность отказа • Легко интегрируемая проверка подлинности • Подключаемые сервисы аутентификации от политики защиты • Защищённый обмен • Security Token Service(STS) Декларативное качество сервиса (QoS) Сообщение SOAP JAX-WS клиент • Управление клиентом веб-службы Auditing/ Logging WSRM WSSecurity Auditing/ Logging WSRM Add Auth Token Конфигурируются с помошью • OEM • WLS Console • WLST • JDeveloper/OEPE Transport HTTP Запрос Отклик Управление поставщиком веб-службы WSSecurity WSRM Auditing/ Logging WSSecurity WSRM Auditing/ Logging Параметры QoS устанавливаются как политики • Security • Reliable Messaging • Attachment • Addressing • Management Сообщение SOAP JAX-WS конечная точка Надёжная доставка (WS-ReliableMessaging) Получатель Отправитель Уровень приложения Уровень приложения Msg RM Source RM Destination Ack • Неявная поддержка через политики • Маштабируется и кластеризуется • Надёжная передача и восстанавление сообщения из постоянного хранилища •Надёжность доставки сообщений: как для синхронной , так и асинхронной передачи •Надёжный обмен сообщениями посредством возможности множественного вызова Асинхронный вызов веб-службы Синхронная передача •Запрос/ответ через HTTP •Короткие операции •Обработка в реальном времени •Недостатки •блокировки •ожидания •таймауты Асинхронная передача •Двусторонний обмен сообщениями через HTTP •Продолжительные операции •Отложенная или групповая обработка •Преимущества •Лучше подходит для реальных бизнес процессов •Богатство шаблонов передачи сообщений •Основан на многопоточности и уведомлениях по JMS Вызовы веб-службы с поддержкой сессии • • • Полезно для приложений, если • Клиент использует последовательные вызовы методов сервисов • результат вызова метода сервиса зависит от предыдущих вызовов Управление передачей сообщений к конечной точке сервиса • “закрепление” экземпляра конечной точки сервиса • Сохранение атрибутов в HTTP-сессии Стили программирования: • JAX-RPC : @Conversation • • JAX-WS : WebServiceContext Маштабируемость с помощью Coherence*Web Сервер Клиент GetShoppingCart (new session) ShoppingCart + SessionID(#1) addItem + SessionID(#1) Response + SessionID(#1) GetShoppingCart(new session) ShoppingCart + SessionID(#2) Маштабируемость с помощью Coherence*Web • Coherence*Web – Контекст сессий хранится в распределённом кеше – Кеширование данных большого количества сессий • Преимущества – Управление данными сессий независимо от сервера приложений – Поддержка большого числа сессий без добавления серверов приложений – Перезагрузка приложения или контейнера без потери сессий • Выгоды от использования Coherence*Web: – Бесконечное маштабирование – Высокая доступность для продолжительных по времени сессий • Coherence может применяться также • для различного вида приложений: web service , JSF, Spring ; • на различных серверах приложений: WebLogic, OAS, WebSphere, Jboss . Веб-службы для работы с базой данных Decoding SOAP JAX-RPC Servlet PL/SQL JSP SQL/DML XML SQL/Query AQ Автоматическая генерация Java-классов Encoding мапинга SOAP SOAP XML Libraries Parser Oracle WebLogic Web Service JDBC Создание REST веб-службы JAX-WS HTTPBinding JAX-RS (JSR-311) @WebServiceProvider( targetNamespace="http://exa mple.org", serviceName = "HelloRS") @BindingType(value = HTTPBinding.HTTP_BINDING) public class HelloRS implements Provider<Source> { @Path("/helloworld") public class HelloRS { @GET @Produces("text/plain") public String getClichedMessage() { return "Hello World"; } } public Source invoke(Source source) { return createSource(“Hello World”); } } Сервисно-компонентная архитектура (SCA) pro perties Java interface – Composite: цельная единица, модуль для развёртывания – Service : точка входа в композит – Component : элемент, реализующий логику – Reference: ссылка на внешний сервис – Wire: соединения сервисов, компонентов и ссылок на сервисы – Binding : протоколы для сервисов и ссылок на сервисы WSDL portType S S s ervic e C1 R w ire B inding : SOAP JMS JCS S … C2 c o m po nent R R re ferenc e c om po s ite WebLogic SCA: – Инструменты для создания SCA приложения на базе простых java-классов – бесшовная интеграция с Oracle SOA Platform <Insert Picture Here> Средства разработки, Администрирование Инструменты разработчика • JDeveloper JAX-RPC/WS & SOA Редактор WSDL HTTP Analyzer • HTTPS • WS-* – DBWS – JAX-RS – WLS SCA – – – • OEPE – – – – • JAX-WS Редактор WSDL Редактор JAX-WS/JAXB WLS SCA Сборка на WLS с помощью Ant – JAX-RPC/WS Пример создания веб-службы в JDeveloper Тестирование веб-службы: JDeveloper Тестирование веб-службы: JDeveloper Тестирование веб-службы: OEM Средства администрирования веб-служб • Администрирование может производиться с помощью: – Oracle Enterprise Manager – WebLogic Administration Console – WebLogic Scripting Tool (WLST) – Конфигурации веб-служб • поиск • изменение – Управление политиками • включение/отключение • параметры конфигурации – Мониторинг активности • Метрики производительности • Метрики нарушений исполнения политик OEM : Полный цикл поддержки политик веб-служб • Администрирование политик – Обзор доступных политик – Подключение политик к вебслужбе – Мониторинг нарушений политик • Управление политиками – Поиск политик – Создание новых политик (в том числе на основе существующих) – Генерация политик клиента – Отслеживание использования политик – Экспорт/импорт – Поддержка всего жизненного цикла управления политиками • Авторизация • Версионность • Запрет использования устаревших политик <Insert Picture Here> Выводы Инфраструктура веб-служб уровня предприятия Маршрутизация на основе содержимого Композитные приложения Контроль доступа Гарантированная доставка Асинхронная Защита передача сообщений данных Шаблоны проектирования веб-служб уровня предприятия WSSecurity WSAddressing WSReliable Messaging WS-AT MTOM Logging Auditing JAXB Data Binding Asynch Service Декларативное QoS (WS-Policy) JAX-WS SwA Stateful Service SCA Web Services Java Programming Model – Java EE Oracle WebLogic Server <Insert Picture Here> Вопросы и ответы OWSM Миграция приложений OC4J JAX-RPC • Два пути миграции: – Compatibility mode – Миграция на WebLogic JAX-RPC веб сервисы • Подробная документация – Upgrade Guide for Java EE • WebLogic SmartUpgrade – база знаний – отчёты – автоматическая миграция <oracle:preDeploy output="${out.dir}/preDeploy" ear = "${build.location}/${app.name}.ear" input = "1013apps/${app.name}.ear"/> Поддержка транзакционности веб-служб JEE Applications Java SCA Applications evi t art si ni md A ) X MJ( s noi t ar e p O Transaction Coordinator Spring Ships OC4J TX Integration Transaction Recovery Manager Global Transaction Local Transactions Protocol Event Notification (JMX) Recoverable Last Resource Commit Transaction Propagation Peer and Inbound HA Tx Recovery Logging (Presume Nothing Presume Abort) Transaction Manager (JTA/JTS) XA Transaction RAC Affinity Tx Log (File or DB) WS-AtomicTransaction/WS-Coordination DB Resource Manager 3rd Party (JMS, DB…) Resource Manager (Global, Local Tx) (Global, Local Tx ) 3rd Party (WebLogic, Vitria BW…) Other OC4J Instances (Global, Local & Tx Propagation) Transaction Manager (JTS Tx Interoperability )