// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Расширенные возможности взаимодействия веб-служб
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Расширенные возможности взаимодействия веб-служб - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Расширенные возможности взаимодействия веб-служб

Advanced Web Service Interoperability (WSIT), или веб-служба 'Quality of Service', включает в себя компоненты, обеспечивающие взаимодействие веб-служб Java и веб-служб .Net. В этом документе описаны некоторые возможности поддержки в среде IDE для настройки веб-служб и клиентов, использующих WSIT. Дополнительные сведения об использовании WSIT см. в разделе link:http://docs.oracle.com/cd/E19159-01/820-1072/ahibn/index.html[+Глава 3. Пример использования WSIT с веб-контейнером и IDE NetBeans+] link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+Практического руководства по WSIT+]


image::images/netbeans-stamp-74-73-72.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3 и 7.4"]


*Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.*

|===
|Программное обеспечение или материал |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Пакетная загрузка Java EE 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 6 или 7 

|Веб-сервер или сервер приложений, совместимый с Java EE |GlassFish Server Open Source Edition 3.1.x, 4.x
или 
link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Oracle WebLogic Server+] 11g или 12c 
|===

При необходимости сервер GlassFish можно установить вместе с дистрибутивом Java EE для IDE NetBeans. Также можно воспользоваться link:https://glassfish.java.net/download.html[+страницей загрузок GlassFish Server+] или link:http://tomcat.apache.org/download-60.cgi[+страницей загрузок Apache Tomcat+].

*Важно! *Для проектов Java EE требуются GlassFish Server 3.1.x, 4.x или Oracle WebLogic Server 12c.


== Введение

Компоненты, относящиеся к расширенным возможностям взаимодействия веб-служб, можно разделить на четыре основных категории.

* *Начальная загрузка и конфигурация.* Процесс, который выполняется для создания клиента веб-службы, у которой есть доступ и возможность использования веб-служб.
* *Безопасность сообщений.* Поддерживаются следующие параметры конфигурации безопасности:
* Цели для возможностей шифрования и подписывания
* Безопасность клиентских служб/веб-служб
* Варианты доверия клиентов/служб
* Дополнительные варианты настройки
* Варианты настройки хранилища ключей
* *Оптимизация сообщений.* Гарантирует, что сообщения веб-служб передаются через Интернет наиболее эффективным образом. Оптимизация сообщений связи веб-служб обеспечивается путем шифрования сообщений до передачи и последующей расшифровки, когда они достигают итоговое место назначения.
* *Надежная передача сообщений.* Измеряется способность системы для передачи сообщений из точки А в точку Б без ошибок.

'Quality of service' настраивается в редакторе атрибутов веб-служб, в который можно перейти из узла веб-службы или клиента в окне 'Проекты'. В этом документе описаны два образца веб-служб, распространяемые в комплекте с IDE: образец незащищенной веб-службы и образец защищенной веб-службы. В документе также описаны различия между этими образцами и процедуры настройки параметров безопасности для собственных веб-служб и клиентов в IDE.

Полное руководство по темам, относящимся к "качеству обслуживания", приведено в разделе link:http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/reference/tutorials/wsit/doc/index.html[+Учебный курс по WSIT+].  


== Знакомство с примером калькулятора

Цель этого упражнения — ознакомиться с примером калькулятора, который входит в состав среды IDE. В отличие от следующего примера этот пример не защищен, как можно будет увидеть при рассмотрении веб-службы.


=== Изучение примера

Цель этого упражнения заключается в создании образца в мастере создания проектов, изучении образца в IDE и развертывании приложения.

1. Выберите Файл > Создать проект (Ctrl-Shift-N для Linux и Windows, ⌘-Shift-N для MacOS). Откроется мастер создания проектов.
2. Разверните категорию 'Образцы', выберите узел 'Веб-службы', затем выберите образец 'Calculator'. Нажмите 'Далее'.
image::images/wsit-newproject.png[title="Мастер создания проектов, в котором отображается образец калькулятора"]

[start=3]
. Проверьте, что в списке 'Сервер' выбран сервер, совместимый с Java EE. Нажмите кнопку "Готово".

При нажатии на кнопку 'Готово' мастер создает два проекта:

* *CalculatorApp* - проект веб-службы с именем CalculatorWS, предоставляющей операцию 'add'.
* *CalculatorClientApp* - проект клиента с именем CalculatorWSService, вызывающего операцию 'add' веб-службы.

Рядом со службой CalculatorClientApp может отображаться значок ошибки, так как IDE не может найти WSDL для службы CalculatorWS. Эта ошибка будет устранена после развертывания приложения CalculatorApp и очистки с последующей сборкой клиента CalculatorClientApp.

image::images/wsit-projects.png[title="В окне &quot;Проекты&quot; отображается веб-служба и клиент"]

[start=4]
. Дважды щелкните веб-службу CalculatorWS, чтобы открыть файл в редакторе. Перейдите на вкладку 'Конструирование' в верхней части редактора, чтобы открыть веб-службу в визуальном редакторе.
image::images/wsit-design.png[title="Служба CalculatorWS на вкладке 'Разработка графических пользовательских интерфейсов (Visual Designer)'"]

*Примечание.* В разделе 'Quality of Service' на вкладке 'Конструирование' выбраны параметры _Нет_. В результате компонент "Качество обслуживания" не был применен к этой веб-службе. Веб-служба с _включенным_ компонентом Quality of Service будет рассмотрена при создании защищенной веб-службы.

Полный учебный курс по веб-службам в среде IDE приведён в документе link:jax-ws.html[+Начало работы с веб-службами JAX-WS+].


=== Развертывание и тестирование примера калькулятора

1. Правой кнопкой мыши щелкните проект CalculatorApp и выберите "Выполнить".

Сервер запускается, и веб-служба развертывается на сервере. В стандартном браузере открывается страница с некоторыми сведениями о службе.

image::images/wsit-browser1.png[title="Окно сведений CalculatorWS в браузере"]

[start=2]
. Нажмите на ссылку WSDL на странице браузера, чтобы перейти к файлу WSDL, определяющему веб-службу. 
image::images/wsit-browser2.png[title="CalculatorWS WSDL в браузере"]

*Примечание.* Если WSDL не отображается, проверьте URL-адрес в адресной строке браузера. Она должна указывать на  ``http://localhost:_your_port_number_/CalculatorApp/CalculatorWSService?WSDL`` .


[start=3]
. В окне 'Проекты' в среде IDE щелкните правой кнопкой мыши CalculatorWS в структуре узла 'Веб-службы' и выберите 'Тестировать веб-службу' в контекстном меню.

При тестировании веб-службы в браузере открывается соответствующая страница.

image::images/wsit-browser3.png[title="Средство тестирования CalculatorWS в браузере"]

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


[start=4]
. Проверьте, нет ли в проекте CalculatorClientApp в окне 'Проекты' сообщений об ошибках.

Если рядом с компонентом  ``ClientServlet.java``  отображаются сообщения об ошибках, щелкните узел проекта правой кнопкой мыши и выберите 'Очистить и собрать' в контекстном меню. Ошибки возникали в связи с отсутствием развернутой службы CalculatorWS. Теперь, когда эта служба развернута, IDE может выполнить анализ файла WSDL и сборку компонента ClientServlet.


[start=5]
. Щелкните правой кнопкой мыши узел проекта CalculatorClientApp и выберите 'Выполнить'.

При запуске приложения в браузере открывается интерфейс службы.

image::images/wsit-browser4.png[title="Клиент службы Calculator в браузере"]

[start=6]
. Введите значения в два поля и нажмите 'Получить результат'.

При нажатии на кнопку 'Получить результат' результат операции извлекается из веб-службы и отображается в клиенте.

Веб-служба работает корректно, и клиент получает результаты, но в проекте не используются компоненты 'Quality of Service'. В следующем разделе вы узнаете, как настраивать компоненты 'Quality of Service'.


==   Знакомство с примером защищенного калькулятора

Цель этого упражнения заключается в изучении настроек защищенной веб-службы и способов ее взаимодействия с клиентом.


=== Изучение примера

В этом упражнении вы создадите образец службы в мастере новых проектов и научитесь настраивать 'Quality of Service' для приложения.

1. Выберите Файл > Создать проект (Ctrl-Shift-N для Linux и Windows, ⌘-Shift-N для MacOS). Откроется мастер создания проектов.
2. Разверните категорию 'Образцы', выберите узел 'Веб-службы', затем выберите образец 'Secure Calculator'. Нажмите кнопку "Далее".
3. Проверьте, что в списке 'Сервер' выбран сервер, совместимый с Java EE. Нажмите кнопку "Готово".

При нажатии на кнопку 'Готово' мастер создает два проекта:

* *SecureCalculatorApp* - проект веб-службы с именем CalculatorWS, предоставляющей операцию 'add'
* *SecureCalculatorClientApp* - проект клиента с именем CalculatorWSService, вызывающего операцию 'add' веб-службы.

Рядом со службой SecureCalculatorClientApp может отображаться значок ошибки, так как IDE не может найти WSDL для службы CalculatorWS. Эта ошибка будет устранена после развертывания приложения SecureCalculatorApp и очистки с последующей сборкой клиента SecureCalculatorClientApp.


[start=4]
. Дважды щелкните веб-службу CalculatorWS в папке 'Веб-службы' проекта SecureCalculatorApp, чтобы открыть файл в редакторе. Перейдите на вкладку 'Конструирование' в верхней части редактора, чтобы открыть веб-службу в визуальном редакторе.

*Примечание.* В разделе 'Quality of Service' представления конструирования службы выбран параметр 'Защищенная служба', а другие два параметра не выбраны. В разделе 'Quality of Service' в представлении конструирования указаны компоненты Quality of Service, _включенные_ для текущей веб-службы.


[start=5]
. Нажмите 'Изменить атрибуты веб-службы', чтобы открыть редактор атрибутов веб-служб.
image::images/wsit-quality-dialog.png[title="Страница 'Quality of Service' в редакторе атрибутов WS"]

На вкладке 'Quality of Service' выбран параметр 'Совместимость версий'. Выберите последнюю версию, соответствующую версии установленных модулей Metro или .NET.

Для отображения раскрывающегося списка совместимой версии добавьте к пути к классам проекта последнюю версию Metro. Для добавления последней библиотеки Metro щелкните правой кнопкой мыши узел проекта в окне 'Проекты', откройте 'Свойства' проекта, перейдите в категорию 'Библиотеки' и найдите и добавьте библиотеку Metro.

Обратите внимание на выбранный параметр 'Защищенная служба' и механизм защиты, также выбранный в списке. Механизм защиты определяет подход, используемый для защиты веб-службы.

В этом образце приложения выбран механизм защиты 'Аутентификация по имени пользователя с использованием симметричных ключей'. Описание параметров и свойств механизма защиты 'Аутентификация по имени пользователя с использованием симметричных ключей' приведено в разделе link:http://docs.oracle.com/cd/E19182-01/821-0015/gggsrv/index.html[+Аутентификация по имени пользователя с использованием симметричных ключей +]. Описания других доступных механизмов защиты приведены в разделе link:http://docs.oracle.com/cd/E19182-01/820-0595/6ncatc2q5/index.html[+Настройка механизмов защиты+].


[start=6]
. Разверните разделы 'Входное сообщение' и 'Выходное сообщение' на вкладке 'Quality of Service'.
image::images/wsit-quality-dialog2.png[title="Страница 'Quality of Service' с включенной кнопкой 'Части сообщения'"]

Если в качестве механизма защиты выбрана 'Аутентификация по имени пользователя с использованием симметричных ключей', в разделах 'Входное сообщение' и 'Выходное сообщение' становится активной кнопка 'Части сообщений'.

*Примечание.* Когда выбран механизм защиты 'Аутентификация по имени пользователя с использованием симметричных ключей', список 'Маркер аутентификации' и параметры в разделе 'Входное сообщение' неактивны.


[start=7]
. Нажмите кнопку 'Части сообщений' в разделе 'Входное сообщение'.
image::images/wsit-messageparts.png[title="Диалоговое окно 'Части сообщений'"]

В диалоговом окне 'Части сообщений' отображаются параметры безопасности для различных элементов. Вы можете установить флажки, чтобы включить или отключить части сообщений, которые требуют подписи, шифрования или являются обязательными. Для каждого элемента можно указать следующие параметры:

* Выберите *Подписать*, чтобы указать части или элементы сообщения, для которых требуется защита от изменения (цифровая подпись).
* Выберите *Зашифровать*, чтобы указать части или элементы сообщения, для которых требуется обеспечение конфиденциальности (шифрование).
* Выберите *Сделать обязательным*, чтобы указать набор обязательных частей и/или элементов сообщения.

Далее будет рассмотрена настройка 'Quality of Service' клиента веб-службы.


[start=8]
. В окне 'Проекты' разверните узел 'Ссылки на веб-службы' проекта *SecureCalculatorClientApp*.

[start=9]
. Щелкните правой кнопкой мыши узел CalculatorWSService и выберите 'Изменить атрибуты службы' в контекстном меню. Откроется диалоговое окно 'Атрибуты веб-службы'. 
image::images/wsit-qos-wsservice.png[title="Диалоговое окно качества обслуживания клиента веб-службы"]

В этом окне по умолчанию заданы имя пользователя 'wsitUser' и пароль. Имя пользователя и пароль по умолчанию были созданы в области 'file'.

Если выбрать параметр 'Использовать значения по умолчанию, указанные при разработке' в разделе 'Безопасность', IDE импортирует сертификаты в хранилище ключей и доверительное хранилище на сервере GlassFish, чтобы их можно было сразу использовать при разработке.

*Важно! * В производственной среде может возникнуть необходимость предоставления собственных сертификатов и пользовательских параметров, однако в среде разработки можно использовать стандартные сертификаты и параметры.

Более подробное описание настройки параметров безопасности для клиента веб-службы приведено в разделе link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+Глава 7. Использование безопасности WSIT+] link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+Практического руководства по WSIT+].


=== Развертывание и тестирование примера защищенного калькулятора

1. Правой кнопкой мыши щелкните узел проекта веб-службы и выберите 'Выполнить'.
2. Правой кнопкой мыши щелкните узел проекта клиента веб-службы и выберите "Выполнить".

При запуске клиента выполняется развертывание приложения, и в браузере открывается интерфейс службы.

image::images/wsit-browser-secure1.png[title="Безопасный клиент веб-службы в браузере"]

[start=3]
. Введите число в каждое поле и нажмите 'Получить результат'.

При нажатии на кнопку 'Получить результат' на странице отображается сообщение о том, что клиент аутентифицирован, затем отображается результат операции.

image::images/wsit-browser-secure2.png[title="Безопасный клиент веб-службы в браузере, в которм отображаются результаты"]

При получении сообщения об ошибке, указывающего на ошибку проверки подлинности из-за неверного имени пользователя/пароля, возникла проблема пользователя по умолчанию, созданного средой IDE, или в клиенте установлены несоответствующие учетные данные. В этом случае необходимо создать пару пользователь/пароль вручную. Дальнейшие инструкции см. в разделе link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+Глава 7. Использование безопасности WSIT+] link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+Практического руководства по WSIT+].

link:/about/contact_form.html?to=3&subject=Feedback:WSIT%20Advanced%20Interoperability%20in%20NetBeans%20IDE%206.0[+Отправить отзыв по этому учебному курсу+]



== Дополнительные сведения

Дополнительные сведения об использовании IDE NetBeans для разработки веб-служб см. следующие ресурсы:

* link:client.html[+Разработка клиентов веб-служб JAX-WS+]
* link:jax-ws.html[+Начало работы с веб-службами JAX-WS+]
* link:rest.html[+Начало работы с веб-службами RESTful+]
* link:flower_overview.html[+Приложение веб-службы для передачи двоичных данных+]
* link:../../74/websvc/jaxb_ru.html[+Привязка WSDL к Java с помощью JAXB+].
* link:../../trails/web.html[+Учебная карта по веб-службам+]

Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с Java EE IDE NetBeans link:../../../community/lists/top.html[+присоединяйтесь к списку рассылки nbj2ee@netbeans.org+].

