2014-12-21 5 views
2

Я работал над некоторыми проектами веб-сервисов с использованием реализации JAX-WS, например Axis. Артефакты создаются с использованием IDE, и он работает. Но я хотел бы знать, как создаются клиентские артефакты и что они делают. Было бы полезно, если бы вы могли предоставить любое окончательное руководство или источник.Клиентские артефакты, созданные в веб-службе java

Я знаю, как создавать артефакт. Но не удалось найти источник, который описывает созданные артефакты клиента и что они делают.

+0

Пожалуйста, добавьте свой комментарий то время как вниз голосования. Я искал повторяющиеся вопросы и не нашел их. – Rajkumar

ответ

4

Как вы уже знаете, JAX-WS предназначен для предоставления спецификации Java API для веб-служб XML. Как объектно-ориентированный разработчик Java, мы не хотим иметь дело с необработанным XML-кодом. Вместо этого мы предлагаем объектно-ориентированное представление XML-файла, чтобы мы имели дело только с классами и объектами.

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

Итак, вы получили файл WSDL, который по сути говорит вам, как получить доступ к сервису (конечная точка службы), каковы выполняемые операции. Какая схема ввода для каждой службы, какова схема вывода, схема ошибок и так далее. .

Один из способов связи с веб-службой - это вручную посмотреть на схему и создать сообщение XML (SOAP) и попытаться подключиться к службе. Это чрезвычайно сложно, подвержено ошибкам, не читается и поддерживается. Вот почему у нас есть спецификация для преобразования огромной, сложной схемы XML в классы, ориентированные на объекты, ориентированные на разработчиков, которые представляют собой те же XML-элементы, которые определены в WSDL. Он также создает фабричные классы для создания экземпляра любых классов POJO.

Возьмите простой файл WSDL и создайте классы клиентов, используя wsimport. Вы можете видеть, что оно создало объектно-ориентированное представление XML-данных ввода-вывода, интерфейсов, созданных для службы и операций, клиента веб-службы, который представляет всю службу, Factory Factory, которая помогает вам создавать экземпляр любых классов передачи данных. JAX-WS будет использовать все эти интерфейсы и классы для создания окончательного сообщения SOAP для вызова веб-службы.

Все, что вам нужно сделать, это создать объект ввода и позвонить в службу веб-сервиса, реализация JAX-WS позаботится обо всех тяжелых переходах конвертирования вашего объекта в SOAP и совершении служебных вызовов, а затем конвертировать ответ SOAP назад к объектно-ориентированному представлению и возврату в ваше приложение.

Например: Возьмите Calculator Service, который имеет операции надстройки и надстройки. Каждая операция ожидает определенного типа сообщения SOAP.wsimoport будет генерировать,

веб-сервиса класса высокого уровня с определением конечной точки (ICalculator)

@WebServiceClient(name = "CalculatorService",...) 
public class CalculatorService 
extends Service 
{ 

…. 
@WebEndpoint(name = "ICalculator") 
    public ICalculator getICalculator(WebServiceFeature... features) { 
    ..... 
    } 
… 
} 

интерфейс, ICalculator для определения каждого Операции,

@WebService(name = "ICalculator", targetNamespace = "http://Example.org") 
public interface ICalculator { 
    …. 
    @WebMethod(operationName = "Add", action = "http://Example.org/ICalculator/Add") 
    @WebResult(name = "result", targetNamespace = "http://Example.org") 
    @RequestWrapper(localName = "Add", targetNamespace = "http://Example.org", className = "org.example.Add") 
    @ResponseWrapper(localName = "AddResponse", targetNamespace = "http://Example.org", className = "org.example.AddResponse") 
    public Integer add(
     @WebParam(name = "a", targetNamespace = "http://Example.org") 
     Integer a, 
     @WebParam(name = "b", targetNamespace = "http://Example.org") 
     Integer b); 

    …. 
} 

Передача данных объекта для представления всех запрос и формат ответа,

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement(name = "Add") 
public class Add { 

    protected Integer a; 
    protected Integer b; 
    …. All getter and setter 

} 

и некоторые другие fa ctory классы тоже. Вы можете видеть, что все эти аннотации определяются спецификацией JAX-WS и используются реализацией JAX-WS для генерации сообщения SOAP и облегчения связи. Вы больше не имеете дело с XML в коде приложения. Вы просто выполняете объектно-ориентированное программирование.

Reference 1 | Reference 2

JAX-RPC является немного старше, вы можете прочитать историю из wikipedia

Веселитесь

0

Java-JAX-RPC API имеет в целом были заменены API JAX-WS - См The Java API for XML-Based Web Services (JAX-WS) 2.0, в котором говорится JAX-WS 2.0 (this specification) is a follow-on to JAX-RPC 1.1, ...

Ваш IDE, скорее всего, используя следующие инструменты для создания артефактов:

man wsimport 
    man wsgen 

Полное описание способа работы JAX-WS и связанных с ним артефактов можно найти в Java™ API for XML-Based Web Services 2.2.

+0

Спасибо за ваш ответ. Тем не менее, я ищу подробности о созданных артефактах и ​​о том, как они работают. Так как я создал артефакты много раз для Axis и JAX-WS, я знаю, как это сделать. – Rajkumar

Смежные вопросы