Отображение Java в WSDL

§ Основные типы Java отображаются в основные типы схемы XML (Boolean, String, Integer, и т.д.)

§ Примитивные типы используют держатель (Holder) классов (которые не наследуются от java.lang.Object, такие как int, byte и т.д.)

§ Классы JavaBean отображаются в структуру схемы XML

§ Артефакты Java отображаются в соответствующие артефакты WSDL (Пакет - Документ WSDL, Интерфейс - PortType, Метод - Операция <operation/>, Исключительная ситуация - Ошибка <fault/>)

§ Java-интерфейс должен расширять java.rmi.Remote, и каждый метод должен выбрасывать исключительную ситуацию java.rmi.RemoteException.

Отображение WSDL в Java

§ Основные типы схемы XML отображаются в основные типы Java

§ Структуры XML и составные типы отображаются в JavaBean

§ Перечисления преобразуются в public static final методы

§ Артефакты WSDL отображаются в соответствующие артефакты Java

Отображение службы

Элемент <service/> определяет то, где можно найти web-службу, посредством интерфейса <port/>, который в нем содержится.

JAX-RPC определяет интерфейс с именем javax.xml.rpc.Service. Конкретный класс, который будет реализовывать этот интерфейс, должен существовать во время исполнения. Интерфейс Service содержит методы, которые клиент может использовать для вызова фактической web-службы.

Есть два различных стиля, в которых клиенты могут использовать для вызова web-службы посредством интерфейса Service. Один - это использование proxy-объекта, который возвращается одним из методов getPort() интерфейса Service. Этот proxy-объект предоставляет методы web-службы локально, преобразуя тип порта из документа WSDL в Java. Еще один вариант - это использовать объект javax.xml.rpc.Call. Объект Call представляет один вызов web-службы. Он позволяет нам устанавливать параметры и другие переменные вызова, а затем исполнять запрос.

Отображение типов

Технология web-служб основана на обмене XML-сообщениями. Мы хотим создавать приложения на Java, поэтому нужно найти способ преобразовывать конструкции XML в объекты Java. Реестр отображения типов (public TypeMappingRegistry javax.xml.rpc.Service.getTypeMappingRegistry()) содержит запись для каждого типа данных, с которым имеет дело web-служба, а именно его XML-определение (типа), Java-определение и то, как преобразовывать их друг в друга. Последнее определено парой интерфейсов Serializer и Deserializer. Serializer преобразовывает Java-объект в строку XML, а Deserializer выполняет обратную операцию. Большинство реализаций JAX-RPC поставляются с набором предопределенных сериализаторов и десериализаторов, которые могут преобразовывать наиболее общие типы данных, поэтому, если пользоваться основными типами, такими как String, Integer, Boolean и т.д. в интерфейсе нашей web-службы, нам не нужно будет ничего делать. В пакет Apache Axis, который мы будем использовать в данной работе, предоставляет также классы BeanSerializer и BeanDeserializer для преобразования объектов JavaBean в XML и наоборот.

 
< Пред   СОДЕРЖАНИЕ   Скачать   След >