T.M. SoftStudio

feci quod potui, faciant meliora potentes

JAX-WS API

Пакет javax.xml.ws

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

  • public abstract java.lang.String name — JNDI-имя Service-класса;

  • public abstract java.lang.Class<?> type — Java-тип Service-класса, по умолчанию java.lang.Object.class;

  • public abstract java.lang.String mappedName — глобальное JNDI-имя для Service-класса;

  • public abstract java.lang.Class<? extends Service> value — имя класса javax.xml.ws.Service или его расширения;

  • public abstract java.lang.String wsdlLocation — URL-адрес WSDL-документа;

  • public abstract java.lang.String lookup — переносимое JNDI-имя Service-класса.

Аннотация @WebServiceRefs служит контейнером для аннотаций @WebServiceRef.

Аннотация @WebServiceProvider(element=value) маркирует класс, представляющий Web-сервис и реализующий интерфейс javax.xml.ws.Provider<T>. Аннотация @WebServiceProvider является альтернативой аннотации @WebService и позволяет создавать Web-сервисы, ориентированные на сообщения, которые основаны на модели RESTFul и обрабатывают XML-сообщения программным образом.

Использование аннотации @WebService скрывает от разработчика маршализацию/демаршализацию SOAP-сообщений. Аннотация же @WebServiceProvider дает возможность полного контроля над обработкой входящих сообщений и формированием исходящих сообщений.

Интерфейс Provider<T> имеет один метод T invoke(T request), вызываемый при получении сообщения. При этом поддерживаются три типа объектов, представляющих XML-данные:

  • javax.xml.transform.Source;

  • javax.activation.DataSource;

  • javax.xml.soap.SOAPMessage.

В переопределенном методе invoke() используется соответствующий низкоуровневый интерфейс XML API для обработки входящих объектов вышеуказанных типов и формирования ответных сообщений.

Аннотация @WebServiceProvider имеет следующие необязательные элементы:

  • public abstract java.lang.String wsdlLocation — адрес WSDL-документа;

  • public abstract java.lang.String serviceName — имя WSDL-элемента <service>;

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

  • public abstract java.lang.String portName — имя WSDL-элемента <port>.

Вместе с аннотацией @WebServiceProvider используется аннотация @ServiceMode(element=value), указывающая, обрабатывает ли Provider-класс все сообщение или только его содержимое без заголовков. Для этого аннотация @ServiceMode использует элемент public abstract Service.Mode value со значениями javax.xml.ws.Service.Mode.PAYLOAD (по умолчанию, обрабатывается только содержимое сообщения без заголовков) или javax.xml.ws.Service.Mode.MESSAGE (сообщение обрабатывается целиком).

Архитектура REST (Representational State Transfer) является альтернативой модели RPC (Remote Procedure Call) построения распределенных систем. RESTful (соответствующая архитектуре REST) распределенная система — это система распределенных информационных ресурсов, каждый из которых характеризуется своим URI-идентификатором и доступен по HTTP-протоколу.

RESTful Web-сервисы — это Web-сервисы, которые обрабатывают HTTP-запросы GET, PUT, POST и DELETE документов, представляющих состояния информационных ресурсов.

Для того чтобы реализовать в методе invoke() Provider-класса обработку HTTP-запросов GET, PUT, POST и DELETE, необходимо знать, какой HTTP-метод был применен при передаче запроса. Для решения этой задачи можно воспользоваться интерфейсом javax.xml.ws.WebServiceContext, обеспечивающим доступ к контексту сообщения. Интерфейс WebServiceContext имеет следующие методы.

  • MessageContext getMessageContext()

Возвращает объект javax.xml.ws.handler.MessageContext, представляющий контекст сообщения. Интерфейс MessageContext расширяет java.util.Map<java.lang.String,java.lang.Object>, обеспечивая набор свойств сообщения, и дополнительно имеет следующие поля и методы:

    – static final java.lang.String MESSAGE_OUTBOUND_PROPERTY — если true, тогда сообщение исходящее, если false — тогда входящее;

    – static final java.lang.String INBOUND_MESSAGE_ATTACHMENTS — набор типа java.util.Map вложений {MIME Content-ID, DataHandler} для входящего сообщения;

    – static final java.lang.String OUTBOUND_MESSAGE_ATTACHMENTS — набор типа java.util.Map вложений {MIME Content-ID, DataHandler} для исходящего сообщения;

    – static final java.lang.String WSDL_DESCRIPTION — источник типа org.xml.sax.InputSource WSDL-документа;

    – static final java.lang.String WSDL_SERVICE — имя WSDL-элемента <service>;

    – static final java.lang.String WSDL_PORT — имя WSDL-элемента <port>;

    – static final java.lang.String WSDL_INTERFACE — имя WSDL-элемента <portType>;

    – static final java.lang.String WSDL_OPERATION — имя WSDL-элемента <operation>;

    – static final java.lang.String HTTP_RESPONSE_CODE — ответный HTTP-код;

    – static final java.lang.String HTTP_REQUEST_HEADERS — набор типа java.util.Map<java.lang.String> или java.util.List<java.lang.String> HTTP-заголовков запроса;

    – static final java.lang.String HTTP_RESPONSE_HEADERS — набор типа java.util.Map<java.lang.String> или java.util.List<java.lang.String> HTTP-заголовков ответа;

    – static final java.lang.String HTTP_REQUEST_METHOD — HTTP-метод запроса;

Примечание

Таким образом, метод getMessageContext() объекта WebServiceContext дает доступ к HTTP-методу запроса, используя свойство HTTP_REQUEST_METHOD объекта MessageContext.

    – static final java.lang.String SERVLET_REQUEST — объект javax.servlet.http.HttpServletRequest;

    – static final java.lang.String SERVLET_RESPONSE — объект javax.servlet.http.HttpServletResponse;

    – static final java.lang.String SERVLET_CONTEXT — объект javax.servlet.ServletContext;

    – static final java.lang.String QUERY_STRING — строка HTTP-запроса.

    – static final java.lang.String PATH_INFO — HTTP-свойство пути ресурса PathInfo;

    – static final java.lang.String REFERENCE_PARAMETERS — набор SOAP-заголовков, имеющих атрибут wsa:IsReferenceParameter="true";

    – void setScope(java.lang.String name, MessageContext.Scope scope) и MessageContext.Scope getScope(java.lang.String name) — первый метод устанавливает, второй метод возвращает область действия свойства сообщения. Перечисление javax.xml.ws.handler.MessageContext.Scope имеет константы APPLICATION (свойство доступно обработчику, клиенту, конечной точке) и HANDLER (свойство доступно только обработчику).

  • java.security.Principal getUserPrincipal()

Возвращает объект java.security.Principal, представляющий пользователя запроса.

  • boolean isUserInRole(java.lang.String role)

Возвращает true, если аутентифицированный пользователь соответствует указанной роли.

  • EndpointReference getEndpointReference(org.w3c.dom.Element...
    referenceParameters)

<T extends EndpointReference> T getEndpointReference(java.lang.Class<T>
clazz, org.w3c.dom.Element... referenceParameters)

Возвращает объект javax.xml.ws.EndpointReference, представляющий ссылку на конечную точку Web-сервиса. Класс EndpointReference имеет методы:

public static EndpointReference readFrom(javax.xml.transform.Source
eprInfoset)

public abstract void writeTo(javax.xml.transform.Result result)

public <T> T getPort(java.lang.Class<T> serviceEndpointInterface,
WebServiceFeature... features)

public java.lang.String toString()

Объект WebServiceContext вводится в класс Web-сервиса с помощью аннотации @Resources. Имея объект WebServiceContext, можно получить объект MessageContext и, соответственно, HTTP-метод запроса. Дальше уже можно реализовать методы, обрабатывающие GET-, PUT-, POST- и DELETE-запросы.

Аннотация @BindingType(element=value) позволяет определить для класса реализации Web-сервиса связывание конечной точки с определенным протоколом передачи сообщений. Дополнительный элемент public abstract java.lang.String value имеет следующие возможные значения:

  • javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING — протокол SOAP 1.1 через HTTP (по умолчанию);

  • javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING — протокол SOAP 1.2 через HTTP;

  • javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_MTOM_BINDING — протокол SOAP 1.1 через HTTP с применением MTOM;

  • javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING — протокол SOAP 1.2 через HTTP с применением MTOM;

  • javax.xml.ws.http.HTTPBinding.HTTP_BINDING — используется для маркировки Provider-класса для связывания конечной точки с XML/HTTP-протоколом передачи сообщений.

Аннотация @Action(element=value) маркирует бизнес-метод Web-сервиса и определяет значение атрибута wsam:Action WSDL-элементов <input>, <output> и <fault> элемента <operation>. Аннотация @Action имеет следующие дополнительные элементы:

  • public abstract java.lang.String input — значение атрибута wsam:Action WSDL-элемента <input>;

  • public abstract java.lang.String output — значение атрибута wsam:Action WSDL-элемента <output>;

  • public abstract FaultAction[] fault — значение атрибута wsam:Action WSDL-элементов <fault>. Для того чтобы определить значение атрибута wsam:Action для каждого WSDL-элемента <fault>, необходимо воспользоваться аннотацией @FaultAction — @Action(fault={@FaultAction(className=[Exception].class, value="...")...}).

Аннотация @RequestWrapper(element=value) маркирует бизнес-метод Web-сервиса и определяет имя SOAP-элемента, содержащего параметры запроса в теле сообщения, а также имя генерируемого реализацией JAXB-класса, отвечающего за маршализацию/демаршализацию данных. Аннотация @RequestWrapper имеет следующие дополнительные элементы:

  • public abstract java.lang.String localName — локальное имя элемента-обертки параметров;

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

  • public abstract java.lang.String partName — имя элемента <wsdl:part> параметров;

  • public abstract java.lang.String className — имя JAXB-класса.

Аннотация @ResponseWrapper(element=value) маркирует бизнес-метод Web-сервиса и определяет имя SOAP-элемента, содержащего параметры ответа в теле сообщения, а также имя генерируемого реализацией JAXB-класса, отвечающего за маршализацию/демаршализацию данных. Аннотация @ResponseWrapper имеет следующие дополнительные элементы:

  • public abstract java.lang.String localName — локальное имя элемента-обертки параметров;

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

  • public abstract java.lang.String partName — имя элемента <wsdl:part> параметров;

  • public abstract java.lang.String className — имя JAXB-класса.

Спецификация Java API for XML-Based Web Services (JAX-WS) Version 2.1 вводит понятие свойств (features) для контроля над свойствами JAX-WS-реализации. Аннотации javax.xml.ws.@RespectBinding, javax.xml.ws.soap.@Addressing и javax.xml.ws.soap.@MTOM, также как и классы javax.xml.ws.RespectBindingFeature, javax.xml.ws.soap.AddressingFeature, javax.xml.ws.soap.MTOMFeature, помогают осуществлять контроль над применением WSDL-документа, WS-Addressing и MTOM во время выполнения. Данные аннотации используются вместе с аннотациями @WebService, @WebServiceProvider и @WebServiceRef.

Аннотация @RespectBinding(enabled=true/false) в случае значения элемента enabled=true заставляет JAX-WS-реализацию проверять во время выполнения элемент <wsdl:binding> на предмет соответствия связывания конечной точки.

Класс RespectBindingFeature имеет конструктор public RespectBindingFeature(boolean enabled), позволяющий включать или выключать данное свойство.

Аннотация @WebServiceClient(element=value) маркирует генерируемый JAX-WS-реализацией на стороне клиента Service-класс, расширяющий класс javax.xml.ws.Service. Аннотация @WebServiceClient имеет следующие дополнительные элементы:

  • public abstract java.lang.String name — локальное имя элемента <wsdl:service>;

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

  • public abstract java.lang.String wsdlLocation — URL-адрес WSDL-документа.

Аннотация @WebEndpoint(name=[локальное имя конечной точки]) маркирует методы getPortName() генерируемого Service-класса.

Класс javax.xml.ws.Service (в отличие от JAX-RPC это класс, а не интерфейс) служит для JAX-WS-клиента фабрикой динамических объектов заглушки — Proxy-объектов, а также объектов javax.xml.ws.Dispatch<T>, обеспечивающих динамический вызов операций SEI-интерфейса.

Отличие JAX-WS от JAX-RPC состоит в том, что в модели программирования JAX-WS на стороне клиента отсутствует Stub-объект — есть только Proxy-объект, а вместо Call-объекта используется Dispatch-объект.

Класс Service предоставляет для JAX-WS-клиента следующие методы:

  • public <T> T getPort(javax.xml.namespace.QName portName,
    java.lang.Class<T> serviceEndpointInterface)

public <T> T getPort(javax.xml.namespace.QName portName,
java.lang.Class<T> serviceEndpointInterface,
WebServiceFeature... features)

public <T> T getPort(java.lang.Class<T> serviceEndpointInterface)

public <T> T getPort(java.lang.Class<T> serviceEndpointInterface,
WebServiceFeature... features)

public <T> T getPort(EndpointReference endpointReference,
java.lang.Class<T> serviceEndpointInterface,
WebServiceFeature... features)

Возвращают Proxy-объект для SEI-интерфейса Web-сервиса. При этом JAX-WS-реализация использует Dynamic Proxy Class API — класс java.lang.reflect.Proxy. Класс javax.xml.ws.WebServiceFeature позволяет программным образом установить требуемые свойства JAX-WS-реализации. Спецификация JAX-WS предопределяет некоторые свойства, представленные классами javax.xml.ws.soap.AddressingFeature, javax.xml.ws.soap.MTOMFeature и javax.xml.ws.RespectBindingFeature, расширяющими класс WebServiceFeature. Альтернативный способ установки свойств JAX-WS-реализации — это применение аннотаций javax.xml.ws.@RespectBinding, javax.xml.ws.soap.@Addressing и javax.xml.ws.soap.@MTOM.

  • public void addPort(javax.xml.namespace.QName portName,
    java.lang.String bindingId, java.lang.String endpointAddress)

Для использования Dispatch-объекта создает порт Web-сервиса с указанными параметрами: portName — QName-имя конечной точки, endpointAddress — адрес конечной точки, bindingId (связывание конечной точки — SOAPBinding.SOAP11HTTP_BINDING, SOAPBinding.SOAP12HTTP_BINDING, HTTPBinding.HTTP_BINDING и др.).

  • public <T> Dispatch<T> createDispatch(javax.xml.namespace.QName
    portName, java.lang.Class<T> type, Service.Mode mode)

public <T> Dispatch<T> createDispatch(javax.xml.namespace.QName
portName, java.lang.Class<T> type, Service.Mode mode,
WebServiceFeature... features)

public <T> Dispatch<T> createDispatch(EndpointReference
endpointReference, java.lang.Class<T> type, Service.Mode mode,
WebServiceFeature... features)

public Dispatch<java.lang.Object>
createDispatch(javax.xml.namespace.QName portName,
JAXBContext context, Service.Mode mode)

public Dispatch<java.lang.Object>
createDispatch(javax.xml.namespace.QName portName,
JAXBContext context, Service.Mode mode, WebServiceFeature... features)

public Dispatch<java.lang.Object> createDispatch(EndpointReference
endpointReference, JAXBContext context, Service.Mode mode,
WebServiceFeature... features)

Создают Dispatch-объект с указанными параметрами, где: portName — QName-имя конечной точки; type — Java-тип объекта, представляющего сообщения — javax.xml.transform.Source, javax.xml.soap.SOAPMessage или javax.activation.DataSource; mode — режим обработки сообщений (Service.Mode.MESSAGE или Service.Mode.PAYLOAD); context — объект JAXBContext, используемый для маршализации/демаршализации сообщений.

  • public javax.xml.namespace.QName getServiceName()

Возвращает QName-имя Web-сервиса.

  • public java.util.Iterator<javax.xml.namespace.QName> getPorts()

Возвращает итератор QName-имен конечных точек Web-сервиса.

  • public java.net.URL getWSDLDocumentLocation()

Возвращает URL-адрес WSDL-документа.

  • public HandlerResolver getHandlerResolver()

public void setHandlerResolver(HandlerResolver handlerResolver)

Первый метод возвращает, второй метод устанавливает объект javax.xml.ws.handler.HandlerResolver, содержащий информацию о цепочке обработчиков сообщений для определенной конечной точки.

  • public java.util.concurrent.Executor getExecutor()

public void setExecutor(java.util.concurrent.Executor executor)

Первый метод возвращает, второй метод устанавливает объект java.util.concurrent.Executor, используемый Service-объектом для выполнения асинхронных обратных вызовов.

  • public static Service create(java.net.URL wsdlDocumentLocation,
    javax.xml.namespace.QName serviceName)

public static Service create(java.net.URL wsdlDocumentLocation,
javax.xml.namespace.QName serviceName, WebServiceFeature... features)

public static Service create(javax.xml.namespace.QName serviceName)

public static Service create(javax.xml.namespace.QName serviceName,
WebServiceFeature... features)

Динамически создают Service-объект. В JAX-WS отсутствует, в отличие от JAX-RPC, класс-фабрика для создания Service-объектов, его заменяет статический метод create(). Использование динамического Service-объекта делает ненужным генерацию артефактов на стороне клиента.

Интерфейс javax.xml.ws.Dispatch<T> позволяет осуществлять синхронный и асинхронный обмен сообщениями с конечной точкой Web-сервиса, при этом сообщения могут быть представлены объектами Java-типа javax.xml.transform.Source, javax.xml.soap.SOAPMessage или javax.activation.DataSource. В случае использования интерфейса Dispatch клиентское приложение полностью отвечает за создание исходящих сообщений. Можно сказать, что интерфейс Dispatch представляет низкоуровневый API обработки сообщений на стороне клиента, также как интерфейс Provider на стороне сервера. Интерфейс Dispatch имеет следующие методы.

  • T invoke(T msg) — синхронный вызов конечной точки.

  • Response<T> invokeAsync(T msg) или java.util.concurrent.Future<?> invokeAsync(T msg, AsyncHandler<T> handler) — асинхронный вызов конечной точки. При использовании первого метода клиенту необходимо в цикле проверять, когда конечная точка Web-сервиса возвратит ответ на запрос и объект Response<T> будет сформирован. Интерфейс javax.xml.ws.Response<T> расширяет интерфейс java.util.concurrent.Future<T> и дополнительно предоставляет метод java.util.Map<java.lang.String, java.lang.Object> getContext(), возвращающий контекст ответного сообщения. Применение метода Future<?> invokeAsync(T msg, AsyncHandler<T> handler) избавляет клиента от необходимости в цикле проверять наличие ответа от сервера. Вместо этого клиент использует слушателя AsyncHandler<T> — объект пользовательского класса, реализующего интерфейс javax.xml.ws.AsyncHandler<T>, который имеет один метод void handleResponse(Response<T> res), вызываемый реализацией при получении ответа от сервера. Интерфейс java.util.concurrent.Future<T> представляет результат асинхронной операции и имеет методы:

    – boolean cancel(boolean mayInterruptIfRunning) — прерывает выполнение задачи;

    – boolean isCancelled() — возвращает true, если задача была прервана;

    – boolean isDone() — возвращает true, если задача была выполнена;

    – V get() или V get(long timeout, TimeUnit unit) — возвращает результат выполнения задачи.

  • void invokeOneWay(T msg)

Вызывает конечную точку в синхронном режиме "запрос без ответа", ожидает HTTP-код 200 или HTTP-код ошибки.

В JAX-RPC интерфейсы Stub и Call сами имеют набор свойств, таких как USERNAME_PROPERTY, PASSWORD_PROPERTY и др. В JAX-WS за конфигурацию объектов Proxy и Dispatch отвечает интерфейс javax.xml.ws.BindingProvider, который они реализуют. Интерфейс BindingProvider имеет следующие свойства и методы.

  • static final java.lang.String USERNAME_PROPERTY — имя пользователя для аутентификации.

  • static final java.lang.String PASSWORD_PROPERTY — пароль для аутентификации.

  • static final java.lang.String ENDPOINT_ADDRESS_PROPERTY — адрес конечной точки.

  • static final java.lang.String SESSION_MAINTAIN_PROPERTY — если true, тогда клиент участвует в сессии, назначенной конечной точкой.

  • static final java.lang.String SOAPACTION_USE_PROPERTY — если true, тогда заголовок SOAPAction используется.

  • static final java.lang.String SOAPACTION_URI_PROPERTY — URI-идентификатор для SOAPAction-заголовка.

  • java.util.Map<java.lang.String,java.lang.Object> getRequestContext()

Возвращает контекст запроса для его последующей инициализации с помощью метода V put(K key, V value) интерфейса Map. Контекст запроса может содержать различного рода свойства, в том числе и свойства интерфейса BindingProvider.

  • java.util.Map<java.lang.String,java.lang.Object> getResponseContext()

Возвращает контекст ответа на синхронный запрос. Контекст ответа на асинхронный запрос возвращается через интерфейс Response.

  • Binding getBinding()

Возвращает объект javax.xml.ws.Binding, представляющий связывание с протоколами передачи сообщений. Интерфейс Binding является базовым для интерфейсов javax.xml.ws.http.HTTPBinding и javax.xml.ws.soap.SOAPBinding и имеет следующие методы:

    – java.util.List<Handler> getHandlerChain() и void setHandlerChain(java.util.List<Handler> chain) — возвращает и устанавливает цепочку обработчиков сообщений для данного связывания;

    – java.lang.String getBindingID() — возвращает URI-идентификатор связывания. Для SOAPBinding — это http://schemas.xmlsoap.org/wsdl/soap/http (SOAP11HTTP_BINDING), http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true (SOAP11HTTP_MTOM_BINDING), http://www.w3.org/2003/05/soap/bindings/HTTP/ (SOAP12HTTP_BINDING), http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true (SOAP12HTTP_MTOM_BINDING), для HTTPBinding — http://www.w3.org/2004/08/wsdl/http.

  • EndpointReference getEndpointReference()

<T extends EndpointReference> T getEndpointReference(java.lang.Class<T>
clazz)

Возвращает объект javax.xml.ws.EndpointReference, содержащий информацию о конечной точке согласно спецификации WS-Addressing.

Аннотация @WebFault(element=value) используется для маркировки специфических классов исключений на стороне сервера, определяя их связывание с WSDL-элементом <wsdl:fault>, а также маркирует генерируемые JAX-WS-реализацией из WSDL-документа классы исключений на стороне клиента. Аннотация @WebFault имеет следующие дополнительные элементы:

  • public abstract java.lang.String name — локальное имя элемента, определенное как значение атрибута element WSDL-элемента <wsdl:part> элемента <wsdl:message>, на который ссылается элемент <wsdl:fault>;

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

  • public abstract java.lang.String faultBean — имя Java-класса, представляющего Java-тип данных элемента;

  • public abstract java.lang.String messageName — имя WSDL-элемента <wsdl:message>, на который ссылается элемент <wsdl:fault>, по умолчанию имя класса исключения.

Класс javax.xml.ws.Holder<T> используется для представления параметров WebParam.Mode.OUT и WebParam.Mode.INOUT аналогично JAX-RPC. Класс Holder имеет поле public T value и конструкторы public Holder() и public Holder(T value).

Класс javax.xml.ws.Endpoint позволяет разворачивать Web-сервис на платформе Java SE 6. Платформа Java SE 6 включает в себя облегченный вариант Web-сервера приложений, дающий возможность публикации конечной точки Web-сервиса динамически во время выполнения. Для запуска Web-сервиса на платформе Java SE 6 создается главный Java-класс, содержащий метод main(), который использует Endpoint API.

Класс Endpoint имеет следующие поля, конструкторы и методы.

  • public static final java.lang.String WSDL_SERVICE — QName-имя WSDL-элемента <service>.

  • public static final java.lang.String WSDL_PORT — QName-имя WSDL-элемента <port>.

  • public Endpoint()

Создает объект Endpoint.

  • public static Endpoint create(java.lang.Object implementor)

public static Endpoint create(java.lang.Object implementor,
WebServiceFeature... features)

public static Endpoint create(java.lang.String bindingId,
java.lang.Object implementor)

public static Endpoint create(java.lang.String bindingId,
java.lang.Object implementor, WebServiceFeature... features)

Создает объект Endpoint с определенным протоколом обмена сообщениями, свойствами среды выполнения и для указанного класса реализации Web-сервиса, промаркированного аннотацией @WebService или @WebServiceProvider.

  • public abstract Binding getBinding()

Возвращает объект javax.xml.ws.Binding, представляющий связывание с протоколами передачи сообщений.

  • public abstract java.lang.Object getImplementor()

Возвращает объект класса реализации Web-сервиса.

  • public abstract void publish(java.lang.String address)

public static Endpoint publish(java.lang.String address,
java.lang.Object implementor)

public static Endpoint publish(java.lang.String address,
java.lang.Object implementor, WebServiceFeature... features)

public abstract void publish(java.lang.Object serverContext)

public void publish(HttpContext serverContext)

Создают и публикуют конечную точку Web-сервиса по указанному адресу. Использование класса javax.xml.ws.spi.http.HttpContext обеспечивает развертывание Web-сервиса в любом HTTP-контейнере, не только JAX-WS RI, поддерживающем пакет javax.xml.ws.spi.http. Для этого создается специфический для конкретного контейнера HttpContext-объект и передается в метод Endpoint.publish(). При этом среда выполнения JAX-WS вызывает метод setHandler(HttpHandler handler) класса HttpContext для установки обработчика HTTP-запросов для данного контекста. Во время выполнения обработчики javax.xml.ws.spi.http.HttpHandler оперируют объектами javax.xml.ws.spi.http.HttpExchange, представляющими HTTP-запросы.

  • public abstract void stop()

Останавливает публикацию конечной точки.

  • public abstract boolean isPublished()

Возвращает true, если конечная точка опубликована.

  • public abstract java.util.List<javax.xml.transform.Source> getMetadata()

public abstract void setMetadata
(java.util.List<javax.xml.transform.Source> metadata)

Первый метод возвращает, второй метод устанавливает список документов для Web-сервиса (описание WSDL и схема XML Schema документов).

  • public abstract java.util.concurrent.Executor getExecutor()

public abstract void setExecutor(java.util.concurrent.Executor executor)

Возвращает и устанавливает объект Executor, отвечающий за адресацию запросов объекту класса реализации Web-сервиса.

  • public abstract java.util.Map<java.lang.String,java.lang.Object>
    getProperties()

public abstract void setProperties
(java.util.Map<java.lang.String,java.lang.Object> properties)

Первый метод возвращает, второй метод устанавливает свойства конечной точки.

  • public abstract EndpointReference
    getEndpointReference(org.w3c.dom.Element... referenceParameters)

public abstract <T extends EndpointReference> T
getEndpointReference(java.lang.Class<T> clazz,
org.w3c.dom.Element... referenceParameters)

Создают объект EndpointReference, содержащий информацию о конечной точке.

  • public void setEndpointContext(EndpointContext ctxt)

Используется средой выполнения JAX-WS при развертывании Web-сервиса, содержащего несколько конечных точек.

Спецификация JAX-WS определяет разрешение WebServicePermission("publishEndpoint"), проверяемое SecurityManager, при публикации конечной точки. Разрешение javax.xml.ws.WebServicePermission расширяет java.security.BasicPermission и позволяет администратору Web-сервера ограничить возможность приложений публиковать конечные точки.