JAX-WS

Java API for XML Web Services (JAX-WS) — это прикладной программный интерфейс языка Java для создания веб-служб, являющийся частью платформы Java EE. JAX-WS является заменой технологии JAX-RPC, предоставляя более документо-ориентированную модель сообщений и упрощая разработку[1] веб-служб за счёт использования аннотаций, впервые появившихся в Java SE 5. Технология JAX-WS является стандартом и описана в JSR 224.


Преимущества JAX-WS[ | ]

  • Использование аннотаций устраняет необходимость создания дескрипторов веб-служб. Декларация конечных точек (endpoints) происходит непосредственно в классах Java.
  • Прямая интеграция с JAXB 2.0.
  • Внедрение ресурсов (Resource injection).
  • Поддержка MTOM[en].
  • Возможность выбора между двумя путями разработки: «снизу вверх» (программист разрабатывает endpoint-классы сам) и «сверху вниз» (Java-классы генерируются по WSDL).

Аннотации[ | ]

JAX-WS использует аннотации, описанные в JSR 181[2], для отображения POJO классов на WSDL. Среди них:

  • @WebService — указывает на то, что Java класс (или интерфейс) является веб-службой.
  • @WebMethod — позволяет настроить то, как будет отображаться метод класса на операцию веб-службы.
  • @WebParam — позволяет настроить то, как будет отображаться конкретный параметр операции на WSDL-часть (part) и XML элемент.
  • @WebResult — позволяет настроить то, как будет отображаться возвращаемое значение операции на WSDL-часть (part) и XML элемент.
  • @Oneway — указывает на то, что операция является односторонней, то есть не имеет выходных параметров.
  • @SOAPBinding — позволяет настроить то, как будет отображаться веб-служба на протокол SOAP.

Изменение названия[ | ]

Первоначально технология должна была называться JAX-RPC 2.0, однако в связи с уходом от RPC-стиля к большей документо-ориентированности было принято решение изменить название на JAX-WS 2.0.

Каркасы, поддерживающие JAX-WS[ | ]

Ссылки[ | ]

Примечания[ | ]

  1. JSR 224, Java API for XML Web Services 2.0  (англ.)
  2. JSR 181, Web Services Metadata for the JavaTM Platform [1]