T.M. SoftStudio

feci quod potui, faciant meliora potentes

JAX-WS API

Пакеты javax.jws и javax.jws.soap

Аннотация @WebService(element=value) маркирует SEI-интерфейс или Java-класс, его реализующий (SEI-класс). Аннотация @WebService имеет следующие необязательные элементы, определяющие связывание "Java  WSDL":

  • public abstract java.lang.String name — имя WSDL-элемента <wsdl:portType>;

  • public abstract java.lang.String targetNamespace — целевое пространство имен для элементов <wsdl:portType> и/или <wsdl:service>;

  • public abstract java.lang.String serviceName — имя элемента <wsdl:service> при маркировке SEI-класса;

  • <public abstract java.lang.String portName> — имя элемента <wsdl:port> при маркировке SEI-класса;

  • <public abstract java.lang.String wsdlLocation> — URL-адрес существующего WSDL-документа, которому должен соответствовать SEI-класс;

  • public abstract java.lang.String endpointInterface — полное имя SEI-интерфейса при маркировке SEI-класса. Данный элемент позволяет определить отдельно SEI-интерфейс и SEI-класс.

Таким образом, модель программирования Web-сервиса JAX-WS отличается от модели JAX-RPC. В модели JAX-RPC всегда нужно кодировать SEI-интерфейс и SEI-класс, а в модели JAX-WS можно создать только SEI-класс.

Аннотация @WebMethod(element=value) маркирует бизнес-метод (метод, представляющий операцию Web-сервиса). Аннотация @WebMethod имеет следующие необязательные элементы:

  • public abstract java.lang.String operationName — имя элемента <wsdl:operation>;

  • public abstract java.lang.String action — значение атрибута soapAction элемента <soap:operation> для элемента <wsdl:binding>;

  • public abstract boolean exclude — используется для маркировки метода SEI-класса, который не является бизнес-методом.

Аннотация @Oneway используется вместе с аннотацией @WebMethod для маркировки метода, имеющего только входящее сообщение и не имеющего исходящего сообщения.

Аннотация @SOAPBinding(element=value) пакета javax.jws.soap определяет параметры связывания конечной точки Web-сервиса с SOAP-протоколом с помощью следующих необязательных элементов:

  • public abstract SOAPBinding.Style style

Определяет стиль кодировки SOAP-сообщений. Перечисление javax.jws.soap.SOAPBinding.Style имеет константы DOCUMENT (по умолчанию) и RPC.

  • public abstract SOAPBinding.Use use

Определяет формат SOAP-сообщений. Перечисление javax.jws.soap.SOAPBinding.Use имеет константы LITERAL (по умолчанию) и ENCODED.

  • public abstract SOAPBinding.ParameterStyle parameterStyle

Определяет содержание параметров SOAP-сообщения в элементах-обертках. Перечисление javax.jws.soap.SOAPBinding.ParameterStyle имеет константы BARE и WRAPPED (по умолчанию).

Аннотация @WebParam(element=value) маркирует параметры бизнес-метода, уточняя их связывание. Аннотация @WebParam имеет следующие необязательные элементы:

  • public abstract java.lang.String name — имя элемента <wsdl:part> (в случае RPC-стиля) или имя XML-элемента;

  • public abstract java.lang.String partName — имя элемента <wsdl:part> (в случае RPC-стиля);

  • public abstract java.lang.String targetNamespace — XML-пространство имен элемента параметра;

  • public abstract WebParam.Mode mode — тип параметра: IN, OUT или INOUT;

  • public abstract boolean header — если true, тогда параметр определен в SOAP-заголовке.

Аннотация @WebResult(element=value) маркирует возвращаемое значение бизнес-метода, уточняя его связывание. Аннотация @WebResult имеет следующие необязательные элементы:

  • public abstract java.lang.String name — имя элемента <wsdl:part> (в случае RPC-стиля) или имя XML-элемента;

  • public abstract java.lang.String partName — имя элемента <wsdl:part> (в случае RPC-стиля);

  • public abstract java.lang.String targetNamespace — XML-пространство имен элемента результата;

  • public abstract boolean header — если true, тогда результат определен в SOAP-заголовке.

Аннотация @HandlerChain(element=value) связывает реализацию Web-сервиса с файлом описания цепочки обработчиков SOAP-сообщений с помощью обязательного элемента public abstract java.lang.String file, указывающего расположение Handler-файла.

Конфигурационный Handler-файл

Конфигурационный Handler-файл имеет корневой элемент <handler-chains> (пространство имен http://java.sun.com/xml/ns/javaee), содержащий один или несколько элементов <handler-chain>.

Рис. 1. Схема элемента <handler-chain>

Элемент <handler-chain> (рис. 1) имеет следующие дочерние элементы:

  • <service-name-pattern> — QName-имя WSDL-элемента <service>, с которым связывается данная цепочка обработчиков;

  • <port-name-pattern> — QName-имя WSDL-элемента <port>, с которым связывается данная цепочка обработчиков;

  • <protocol-binding> — URI протокола сообщений;

  • <handler> — обработчик сообщений, описываемый с помощью дочерних элементов:

    – обязательный элемент <handler-name> — имя обработчика;

    – обязательный элемент <handler-class> — полное имя Java-класса обработчика;

    – дополнительный элемент <init-param> определяет параметры инициализации обработчика с помощью дочерних элементов <param-name> и <param-value>;

    – дополнительный элемент <soap-header> — QName-имя обрабатываемого SOAP-заголовка;

    – дополнительный элемент <soap-role> — роль для обработчика.