JAX-WS и JAX-RPC представляют собой API Java для приема/передачи сообщений SOAP в связываниях веб-служб.
JAX-RPC означает Java™ API для RPC на базе XML, также называется JSR 101. Это спецификация, описывающая API Java и соглашения для компоновки веб-служб и клиентов веб-служб, использующих удаленные вызовы процедур (RPC) и XML. Она стандартизирует преобразование Java в WSDL и WSDL в Java и предоставляет основные API для разработки веб-служб и клиентов веб-служб на платформах Java. Зачастую используемый в модели распределенного клиента/сервера, механизм RPC позволяет клиентам выполнять процедуры в других системах.
Текущему выпуску JAX-RPC необходима поддержка SOAP через HTTP для обеспечения стыкуемости. Спецификация SOAP задает структуру сообщения, правила кодировки и соглашения об обмене информацией в программной модели RPC. Эти вызовы и ответы передаются в виде сообщений SOAP через HTTP. В данном выпуске JAX-RPC поддерживает SOAP 1.1 и HTTP 1.1. За дополнительной информацией о SOAP обратитесь к разделу SOAP.
Несмотря на то, что базовые механизмы выполнения (например, сериализация Java в WSDL, десериализация WSDL в Java, протокол и транспортный протокол) очень сложны, API скрывает эту сложность от разработчика приложения. На стороне сервера разработчик может предоставить Service Endpoint Interface (SEI); либо SEI можно создать с помощью мастера веб-служб. SEI является интерфейсом, написанным на языке Java, указывающим удаленные процедуры веб-службы. Разработчик также указывает реализацию веб-службы в виде одного или нескольких классов Java, реализующих методы с той же подписью, что и SEI. Код клиентских программ довольно прост. Клиент создает посредника, локальный объект, представляющий реализацию службы и SEI, а затем просто вызывает методы для проводника.
RPC-ориентированные взаимодействия удобны для краткого обмена данными. В RPC-ориентированном взаимодействии запросы веб-сервисов приобретают форму вызова метода или процедуры с соответствующими входными или выходными параметрами. В отличие от документно-ориентированного взаимодействия, RPC-ориентир. взаимодействие производит отправку документа, специально отформатированного для передачи в отдельную логическую программу или базу данных. Например, заказ коньков в режиме реального времени зависит от их наличия на складе, программа обращается к базе данных с проверкой наличия заказываемого товара. Если получено подтверждение, то программа вернет заказчику XML-документ в формате "запрос/ответ", сообщающий о принятии заказа с его последующим исполнением. Если поставка невозможна, будет получено сообщение об отсрочке выполнения заказа или о полном отказе от его выполнения. В отличие от документно-ориентированного стиля взаимодействия, запрос и ответ моделируются как синхронные сообщения, то есть приложение, посылающее сообщение, ждет реакции на него.
Удаленный вызов процедур, RPC
Основные моменты развертывания RPC:
- разработка интерфейса удаленного сервисного объекта (формальное описание методов объекта, типа параметров и результата), реализующего вычислительный сервис (Web Service);
- кодирование методов сервисного объекта (implemention);
- создание описания методов объекта в WSDL-документе;
- декларация WSDL-документа;
- обработка (поиск и анализ) клиентской программой WSDL-документа;
- связывание (binding) - подключение к серверу (провайдеру сервиса);
- формирование объектной ссылки для методов сервисного объекта;
- обращение к методам сервиса и получение результатов вычислений.
Надо отметить два существенных момента использования RPC:
- единственным форматом передач данных в технологии Web-служб являются SOAP-сообщения, поэтому серьезной проблемой является конвертирование всех вызовов процедур и их данных в стандартный формат, принятый в SOAP, т.е. в XML-структуру (это позволяет обеспечить реальную совместимость всех участвующих компонент распределенной системы).
- взаимное конвертирование SOAP-сообщений и RPC-запросов выполняют специальные программы – представители противоположной стороны. На стороне клиента они называются стабами (stubs), а в серверной программе для Web-служб они называются tie. Эти программы-посредники генерируются автоматически при подготовке и развертывании клиентских и серверных компонент Web-служб. Уровень знания их и применения прикладным программистом зависит от конкретной программной реализации Web-службы компанией-производителем.
JAXR (Java API for XML Registries) – составная часть свободно распространяемого пакета JWSDP компании Sun, в котором реализована поддержка Web-служб. Надо подчеркнуть особенности этой службы регистрации:
- пользователь может самостоятельно устанавливать сервер регистрации JAXR и соответствующую базу данных;
- информационная модель JAXR основана на RIM-модели регистрирующей системы ebXML (RIM, Registry Information Model) с расширенной поддержкой UDDI. Таким образом, JAXR является совместимым с обеими моделями UDDI и ebXML.
В случае с RPC клиент делает вызов удаленного метода web-сервиса, который обрабатывается на сервере. На макроуровне клиент передает SOAP-запрос и получает SOAP-ответ.