Разработка веб-служб средствами Java. Ильдар ХабибуллинРазработкаWebслужбсредствами
Скачать 9.24 Mb.
|
SOAPEnvelope, SOAPHeader, SOAPBody. Блоки заголовка описывает интерфейс а содержимое ПОСЛаНИЯ — Интерфейс SOAPBodyElement расширен интерфейсом описы- вающим элемент и определенный в спецификации SOAP. Элементы, вложенные в а < d e t a i l > циально описан интерфейсом D e t a i l . Элементы, вложенные в D e t a i l E n t r y . Вся эта иерархия интерфейсов показана на рис. 6.1. SOAPEnvelope -SOAPHeader -SOAPBody SOAPFault Detail -DetailEntry 6 . 1 . Иерархия интерфейсов SAAJ Корневой элемент SOAPEnvelope Интерфейс SOAPEnvelope добавляет к методам интерфейса сле- дующие методы, создающие элементы SOAP-послания: • p u b l i c SOAPHeader — добавляет К SOAP-ПОСЛаниЮ пустой заголовок — элемент • p u b l i c SOAPHeader — формирует элемент вращает ссылку на него; • p u b l i c SOAPBody — добавляет к SOAP-посланию пустой эле- мент и возвращает ссылку на него; p u b l i c SOAPBody getBody () — возвращает ссылку на созданный этим же методом пустой элемент ; • p u b l i c Name ( S t r i n g — создает элемент XML С именем localName без префикса; • public Name localName, String prefix, String u r i ) — создает элемент XML с расширенным именем и идентификатором пространства имен u r i . Глава 6. Детали создания Web Services Заголовок послания SOAPHeader Интерфейс SOAPHeader, в свою очередь, описывает метод public name), создающий и добавляющий блок заголовка с именем name. Кроме этого ме- тода в интерфейс входит еще метод public Iterator actor), возвращающий итератор для перебора всех блоков заголовка, предназна- ченных для роли actor, и метод public Iterator actor), удаляющий из заголовка блоки, предназначенные для роли actor, и воз- вращающий итератор для их перебора. Содержимое послания SOAPBody Интерфейс SOAPBody содержит метод public name), добавляющий к содержимому SOAP-послания произвольный элемент, и методы public SOAPFault public SOAPFault public boolean работающие с элементом вкладываемым в элемент для от- правки сообщения об ошибке. Как видите, интерфейсы, входящие в пакет SAAJ, детально описывают структуру SOAP-послания и содержат все методы для создания и изменения его элементов. Послание SOAPMessage Пакет SAAJ позволяет создавать SOAP-послания с дополнениями, следуя спецификации "SOAP с дополнениями", с которой мы познакомились в гла- ве 3. Для этого в его состав введен абстрактный класс SOAPMessage, методы которого создают, добавляют или удаляют дополнительные части послания. Начальная часть SOAP-послания с дополнениями, содержащая собственно SOAP-послание, описана абстрактным классом soAPPart, а сами дополне- ния определены в абстрактном классе AttachmentPart. Заголовок каждой части добавляется и удаляется методами класса а каждое поле заголовка — методами класса Разработка Web-служб средствами Java Таким образом, пакет SAAJ составлен из интерфейсов и абстрактных классов, требующих реализации. В наборе Sun WSDP такая реализация сделана клас- сами, упакованными в архив saaj-ri.jar. Реализация сильно зависит от опера- ционной среды, в которой будет работать система SAAJ. Поэтому у классов, реализующих пакет SAAJ, почти нет конструкторов, их экземпляры создают- ся через фабричные классы и их методы. Фабричные классы MessageFactory, SOAPFactory И SOAPConnectionFactory ВХОДЯТ В SAAJ. Процесс создания SOAP-послания Формирование SOAP-послания удобно начать с создания экземпляра класса SOAPMessage. Для ЭТОГО метод класса MessageFactory, предварительно создав объект класса MessageFactory его же статическим методом (): MessageFactory = SOAPMessage = Далее из объекта smsg, представляющего SOAP-послание с дополнениями, выделяем начальную часть soapPart, содержащую пока еще пустое SOAP- послание: SOAPPart soapPart = Потом создаем корневой элемент SOAP-послания: SOAPEnvelope env = После этого уже сформирован элемент В то время, когда были написаны эти строки, пакет SAAJ 1.1 формировал SOAP-послания версии SOAP 1.1, поэтому он записал старый идентифика- тор пространства имен Затем формируем заголовок |