-RPC и SOAP

JAX-RPC API был определен таким образом, чтобы позволить нам использовать его независимо от протокола, который используется для вызова web-служб. Тем не менее, сегодня большинство web-служб используют SOAP в качестве протокола вызова. Поэтому в спецификации JAX-RPC есть специальный раздел, который объясняет, как использовать JAX-RPC по отношению только к SOAP.

Взаимодействие с web-службой по протоколу SOAP может происходить одним из двух способов, или стилей. Один стиль называется стилем rpc, а другой - это документоориентированным стилем (document style). Вкратце стиль rpc означает, что вызов web-службы рассматривается как вызов функции, когда функции передаются параметры и возвращается результирующее значение. Документоориентированный стиль подразумевает, что мы посылаем документ XML web-службе, а в ответ можем получить, а можем и не получить другой документ XML.

Поверх стиля вызова существуют два основных способа кодирования данных в сообщение SOAP: один - это использовать кодировку SOAP по умолчанию, определенную в спецификации SOAP, а другой называется буквенным XML (literal XML). При работе с буквенной кодировкой (или вообще при отсутствии кодировки) вы не кодируете никаких данных, а добавляете порцию данных XML в тело SOAP.

Почти во всех случаях используются только две из этих комбинаций: web-службы либо поддерживают RPC-стиль вызова с кодировкой SOAP по умолчанию, либо они поддерживают документоориентированный стиль с буквенной кодировкой XML. Спецификация JAX-RPC требует, чтобы любая реализация API поддерживала две упомянутые выше комбинации, другие возможные комбинации являются необязательными. Фактически спецификация требует, чтобы клиентский API в этих двух случаях не отличался, так чтобы могли использовать web-службы в обоих стилях одинаковым образом. Из этого правила есть исключение в случае, когда отсутствует простое отображение типа, определенного в документе WSDL, в тип Java. Один простой пример этого - это если бы схема XML определяла, чтобы атрибуты были частью документа XML. Атрибуты не могут быть отображены в типы Java. В этих случаях интерфейс будет содержать объект, который будет просто оболочкой конструкции XML.

Handlers

Механизм SOAP Handlers позволяет встраивать обработчики для входящих и исходящих SOAP-сообщений. Эти обработчики можно организовывать в цепочки, определив порядок вызова обработчиков во время прохождения запроса.

Axis предоставляет интерфейс org.apache.axis.Handler. Рассмотрим некоторые методы:

Таблица 1 Описание основных методов класса org.apache.axis.Handler

SOAP Handlers можно применять для разных задач, например: журналирование запросов, система безопасности или даже изменение SOAP-сообщения. В интерфейсе Handler также присутствует метод generateWSDL(MessageContext), который вызывается, когда клиент хочет получить WSDL сервиса (например, набрав адрес сервиса в браузере + “?wsdl”).

Регистрация SOAP Handlers

Файл deployment descriptor позволяет конфигурировать цепочки обработчиков для сервиса элементами <requestFlow>, <responseFlow>, <chain> и <handler> (http://ws.apache.org/axis/java/reference.html). См. описание ant-цели axis-wsdl2java-server (добавление в файл развертывания (deployment descriptor) информации о SOAP Handler'ах, используя XSLT-преобразование).

 
< Пред   СОДЕРЖАНИЕ   Скачать   След >