corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Передача двоичных данных с помощью приложения веб-службы, часть 4: изменение файлов схемы и WSDL

В этом уроке рассматривается добавление файла WSDL и файла схемы в веб-приложение. Также описывается изменение файла схемы для интерпретации массива байтов как изображений. Кроме того, в этом уроке представлены способы редактирования исходного кода веб-службы для правильного определения местоположения файлов схемы и WSDL. В процессе изучения учебного курса описаны различные средства среды IDE для работы с файлами WSDL и схемы.

Процедуру, рассматриваемую в этом разделе, можно применять к любым веб-службам JAX-WS для передачи данных типа MIME в качестве двоичных данных. В качестве основы для настройки схем WSDL и XML можно использовать веб-службу, передающую двоичные данные, которая была создана при изучении уроков 2 и 3. В настроенном файле схемы XML в возвращаемый элемент добавляется атрибут expectedContentTypes="mime_type" для двоичных данных. Этот атрибут сообщает клиенту о необходимости сопоставления двоичных данных с типом Java (сопоставление "MIME > Тип Java"), а не с массивом байтов. В этом учебном курсе выполняется сопоставление двоичных данных с java.awt.Image, однако двоичные данные можно сопоставлять с любыми типами Java, указанными в спецификации JAXB 2.0, как описано в руководстве пользователя по JAX-WS.

Готовый образец веб-службы можно загрузить из каталога примеров NetBeans.

Уроки, представленные в этом учебном курсе

Сведения на этой странице относятся к среде IDE NetBeans 6.9-7.1
  1. Обзор
  2. Создание веб-службы
  3. Написание кода веб-службы и ее тестирование
  4. => Изменение файлов схемы и WSDL для передачи двоичных данных
  5. Создание клиента Swing

Изменение файла схемы и файлов WSDL для передачи двоичных данных

Ниже приведена процедура создания измененных файлов WSDL схемы XML для веб-службы, созданной при изучении предыдущего учебного курса. Измененные файлы WSDL и схемы позволяют веб-службе и потребляющим ее клиентам обрабатывать данные изображений JPEG, передаваемых как двоичные данные.

Изменение файлов WSDL и схемы:

  1. Разверните в окне "Проекты" узлы веб-приложения FlowerService до узла WEB-INF. Щелкните папку WEB-INF правой кнопкой мыши и выберите пункт "Создать", а затем – "Папка". (При необходимости выберите "Создать" > "Прочее", а затем – категорию "Прочее").
    Узлы проекта FlowerService с каталогом WEB-INF
  2. Нажмите кнопку "Далее". Откроется страница "Имя и местоположение". Присвойте папке имя wsdl.
    Страница "Имя и местоположение" мастера создания файла для новой папки с именем wsdl и местоположением web/WEB-INF
  3. Нажмите кнопку "Готово". В окне "Проекты" появится папка wsdl.
    Папка wsdl в окне "Проекты"
  4. Разверните узел "Веб-службы" и щелкните правой кнопкой мыши узел FlowerService. Выберите команду "Создать и копировать файл WSDL"
  5. Откроется диалоговое окно "Создать и копировать файл WSDL" с деревом навигации. Перейдите к созданной папке wsdl (FlowerAlbumService > web > WEB-INF > wsdl) и щелкните ОК.

    Теперь в узле wsdl отображаются файлы FlowerService.wsdl и FlowerService_schema1.xsd. Также выводится новый узел для созданных исходных файлов (jax-ws).

    Окно "Проекты" со скопированными файлами wsdl и схемы
  6. Необходимо явно указать на необходимость использования созданной версии файла WSDL для сервера приложений. В противном случае на сервере приложений будет создан собственный файл WSDL. Откройте файл FlowerService.java и найдите аннотацию @WebService. Добавьте в эту аннотацию параметр wsdlLocation="WEB-INF/wsdl/FlowerService.wsdl" следующим образом:
    @WebService(wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")

    Внимание! Необходимо использовать GlassFish Server Open Source Edition 3.1 или более поздней версии. Сервер GlassFish 3.0.1 игнорирует атрибут wsdlLocation.

  7. Измените файл схемы FlowerService_schema1.xsd таким образом, чтобы он определял ожидаемый тип возвращаемого элемента. Для определения возвращаемого элемента в файле схемы откройте этот файл и найдите составные типы getThumbnailResponse и getFlowerResponse:
    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
  8. Добавьте следующие атрибуты в оба возвращаемых элемента (<xs:element name="return".../>):.
    xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"

    Теперь те же строки должны выглядеть следующим образом:

    <xs:complexType name="getThumbnailsResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="getFlowerResponse">
    <xs:sequence>
    <xs:element name="return" type="xs:base64Binary" minOccurs="0" xmime:expectedContentTypes="image/jpeg" xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>
    </xs:sequence>
    </xs:complexType>
  9. Теперь при повторном развертывании веб-службы в приложении тестирования и вызове одной из операций можно убедиться, что изображение возвращается корректно:
    Приложение на Java с потребляемой веб-службой

После подтверждения в приложении тестирования, что изображения возвращаются корректно, можно создать клиент Swing для получения и отображения изображений.

Что дальше?

Создание клиента Swing

Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для Java EE в среде IDE NetBeans можно в списке рассылки .