Передача двоичных данных с помощью приложения веб-службы, часть 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 7.2, 7.3, 7.4 и 8.0
  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(serviceName = "FlowerService", wsdlLocation = "WEB-INF/wsdl/FlowerService.wsdl")
  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. Теперь при повторном развертывании веб-службы в приложении тестирования и вызове одной из операций можно убедиться, что изображение возвращается корректно:
    Приложение Converter будет запущено с помощью Java Web Start.

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

Что дальше?

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

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

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo