Как вы уже знаете, 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
Веселитесь
Пожалуйста, добавьте свой комментарий то время как вниз голосования. Я искал повторяющиеся вопросы и не нашел их. – Rajkumar