// 
//     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.
//

= Запуск веб-приложений в Oracle Cloud
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Запуск веб-приложений в Oracle Cloud - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Запуск веб-приложений в Oracle Cloud

Oracle Cloud - это корпоративная облачная среда для бизнеса. Oracle Cloud предлагает бизнес-приложения самообслуживания, поставляемые в интегрированной разработке и платформе внедрения со средствами для быстрого расширения и создания новых услуг. Подробнее об Oracle Cloud см. на link:https://cloud.oracle.com[+домашней странице Oracle Cloud+].

В этом документе описывается регистрация Oracle Cloud в IDE NetBeans и некоторые функции Oracle Cloud, которые поддерживаются в IDE. В этом документе рассматриваются некоторые преимущества и недостатки работы только с облачной средой по сравнению с работой с локальным сервером и последующим развертыванием в облачной среде. В конце создается простое веб-приложение согласно инструкциям в разделе link:quickstart-webapps.html[+Введение в веб-приложения+] и выполняется его запуск в Oracle Cloud.

Также рекомендуем ознакомиться со серией руководств link:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+Разработка Oracle Cloud с использованием NetBeans и Eclipse (OEPE)+] в блоге Java Training Beat.


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


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

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

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Версия 7.3, 7.4, 8.0, Java EE 

|Подключаемый модуль Oracle Cloud |Доступен из центра обновлений NetBeans с помощью диспетчера подключаемых модулей NetBeans 

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

|Служба Oracle Java Cloud |Зарегистрируйтесь на домашней странице link:http://cloudcentral.c9dev.oraclecorp.com/mycloud/f?p=SERVICE:free_trial:0[+Oracle Cloud Public Availability+] 

|Oracle Java Cloud Service SDK |Загрузите с домашней страницы link:http://cloud.oracle.com[+Oracle Cloud+]. 

|link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Сервер Oracle WebLogic+] 
(для локальной разработки и тестирования приложений)

 |
Версия указана в главе 4 руководства пользователей по службе Oracle Java Cloud
Этот документ можно просмотреть, выбрав 'Ресурсы' > вкладка 'Документация' link:https://cloudeap.oracle.com/mycloud/f?p=service:home:0[+ в активированной службе Java Cloud+]. 

|link:http://www.oracle.com/technetwork/products/express-edition/downloads/index.html[+Сервер базы данных OracleXE+] 
(для локальной разработки и тестирования приложений) |11g 
|===


[[sdk-download]]
== Загрузка Oracle Java Cloud Service SDK

Для разработки веб-приложений в Oracle Cloud требуется локальная копия Oracle Java Cloud Service SDK. Oracle Java Cloud Service SDK можно загрузить на домашней странице link:http://cloud.oracle.com[+Oracle Cloud+].

*Для загрузки Oracle Java Cloud Service SDK:*

1. Поместите окно браузера на домашнюю страницу link:http://cloud.oracle.com[+Oracle Cloud+].
2. Разверните раскрывающийся список *Ресурсы* в главном меню и щелкните *Загрузки*.
3. Щелкните *Загрузить Oracle Java Cloud Service SDK* в разделе Oracle Java Cloud Service SDK.
4. На странице загрузки Oracle Java Cloud Service SDK прочтите и примите условия лицензионного соглашения OTN для активации ссылки на загрузку.
5. Загрузите и извлеките SDK в локальную систему.


[[install-plugin]]
== Установка подключаемого модуля Oracle Cloud

Чтобы включить поддержку службы Oracle Java Cloud в IDE, необходимо установить подключаемый модуль Oracle Cloud в центре обновлений NetBeans. Можно использовать диспетчер подключаемых модулей NetBeans для установки подключаемого модуля Oracle Cloud.

Для установки подключаемого модуля Oracle Cloud выполните следующие действия.

1. Выберите 'Сервис' > 'Подключаемые модули' в главном меню, чтобы открыть диспетчер подключаемых модулей.
2. Выберите вкладку 'Доступные подключаемые модули' в диспетчере подключаемых модулей.
3. Найдите и установите флажок для подключаемого модуля Oracle Cloud. Нажмите кнопку 'Установить'.

При щелчке 'Установить IDE' открывается программа установки IDE NetBeans. Для установки подключаемого модуля нужно выполнить действия, описанные в мастере установки.

После установки подключаемого модуля Oracle Cloud в мастере добавления поставщиков облачных услуг в списке поддерживаемых поставщиков облачных услуг будет отображаться Oracle Cloud.


== Регистрация подключаемого модуля Oracle Cloud в IDE

Перед началом использования Oracle Cloud его необходимо зарегистрировать в окне 'Службы' IDE. Обратите внимание, что требуется отдельная установка SDK службы Oracle Java Cloud.

*Примечание.* Для работы с Oracle Cloud в IDE NetBeans требуется учетная запись пользователя в Oracle Cloud.

*Чтобы зарегистрировать Oracle Cloud в IDE, выполните следующие действия.*

1. Откройте окно 'Службы' в IDE ('Окно' > 'Службы' или Ctrl-5).
2. Щелкните правой кнопкой мыши узел Cloud и выберите пункт 'Добавить облако', чтобы открыть мастер добавления поставщика облачных услуг.

image::images/add-cloud.png[]

[start=3]
. В поле 'Выбрать облако' выберите Oracle Cloud и нажмите кнопку 'Далее', чтобы открыть панель Oracle Cloud. 

image::images/oracle-cloud1.png[]

[start=4]
. Заполните все поля. Перейдите к папке, содержащей файл JAR для Oracle Java Cloud Service SDK. Нажмите кнопку 'Далее'.

После нажатия кнопки 'Далее' IDE проверяет подключение к облаку. Если соединение прошло успешно, отображается перечень облачных служб. В настоящее время доступен только удаленный сервер Oracle Cloud (Oracle WebLogic).

*Примечание.* После регистрации поставщика Oracle Cloud можно изменить данные облака в его свойствах. Откройте окно 'Свойства', щелкнув правой кнопкой мыши узел Oracle Cloud и выберите 'Свойства'.


[start=5]
. Убедитесь, что поставщик Oracle Cloud отображается в списке ресурсов облачных служб. Нажмите кнопку 'Готово'.

Сейчас Oracle Cloud указан в узле 'Облако' в окне 'Службы'. Можно щелкнуть правой кнопкой мыши узел Oracle Cloud, чтобы открыть контекстное меню, которое содержит команды для обновления списка служб, открыв список заданий и журналов и удалив экземпляр облака или просмотрев свойства облака.

image::images/cloud-contextmenu.png[]

При регистрации Oracle Cloud в IDE экземпляр узла удаленного сервера Oracle Cloud также отображается в узле 'Серверы'. (Если он не отображается, щелкните правой кнопкой мыши узел Oracle Cloud и выберите 'Обновить').

image::images/registered-cloud-and-server.png[]

Можно развернуть удаленный узел Oracle Cloud, чтобы просмотреть список приложений, развернутых на удаленном сервере.


== Просмотр заданий и журналов

Все запросы, передаваемые IDE NetBeans в Oracle Cloud приводят к созданию задания. Каждое задание имеет состояние (передано, запущено, сбой, завершено) и может иметь один или несколько файлов журналов (журнал проверки белого списка, журнал сканирования на антивирусы, журнал развертывания). Можно просматривать последние задания и их журналы с помощью действия 'Просмотр заданий и журналов'.

Щелкните правой кнопкой мыши узел Oracle Cloud и выберите 'Просмотр заданий и журналов'. В окне редактора отображается список последних 50 заданий и журналов. Его загрузка занимает несколько минут. Список заданий не обновляется автоматически. Нажмите кнопку 'Обновить', чтобы обновить список.

image::images/jobs-n-logs.png[]


== Удаленный сервер Oracle Cloud

Удаленный сервер Oracle Cloud представляет собой экземпляр Oracle WebLogic, запущенный в Oracle Cloud. Разверните узел удаленного Oracle Cloud и просмотрите список приложений, запущенных на этом сервере. Можно щелкнуть правой кнопкой мыши приложение, чтобы открыть контекстное меню, которое содержит команды для запуска, остановки и отмены развертывания приложения. Можно нажать в меню 'Просмотр', чтобы открыть домашнюю страницу приложения в браузере.

image::images/webapp-contextmenu.png[]

Чтобы обновить список развернутых приложений, щелкните правой кнопкой мыши узел удаленного узла Oracle Cloud и выберите 'Обновить'.

image::images/server-contextmenu.png[]

 


== Разработка приложений на локальном компьютере

Мы рекомендуем выполнять разработку приложений на локальном компьютере и периодически развертывать их в облаке. Хотя вполне возможно выполнять разработку веб-приложений полностью в Oracle Cloud, локальная разработка является предпочтительным способом по следующим причинам.

* Локальное развертывание занимает всего несколько секунд на запущенном сервере. Развертывание в облаке может занять несколько минут.
* Поэтапное развертывание доступно только локально.
* Отладка доступна только локально.

Также существуют риски, связанные с локальной разработкой и развертыванием в Oracle Cloud. Приложения, разработанные локально, могут не запускаться на удаленном сервере Oracle Cloud. Для обеспечения безопасности рекомендуется выполнять разработку локально на сервере Oracle WebLogic Server 11g, т.е. на том же сервере, что и удаленный сервер Oracle Cloud.

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

*Чтобы изменить сервер веб-приложения между локальным сервером и Oracle Cloud:*

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

image::images/project-contextmenu.png[]

[start=2]
. В окне 'Свойства проекта' выберите категорию 'Выполнить'.

image::images/run-properties.png[]

[start=3]
. В раскрывающемся списке 'Сервер' выберите нужный сервер (удаленный сервер Oracle Cloud или локальный Oracle WebLogic). Сервер должен быть зарегистрирован в IDE. Можно добавить сервер, щелкнув правой кнопкой узел 'Серверы' в окне 'Службы'.


== Создание веб-приложения

Перейдите к разделу link:quickstart-webapps.html[+Введение в разработку веб-приложений+] и завершите этот учебный курс. Разработка веб-приложений на локальном сервере Oracle WebLogic. После завершения работы с приложением измените сервер на удаленный сервер Oracle Cloud и запустите приложение.

*Примечание.* Необходимо установить сервер Oracle WebLogic локально и зарегистрировать сервер в IDE. Подробнее см. в разделе link:https://netbeans.org/kb/docs/javaee/weblogic-javaee-m1-screencast.html[+Видеоролик развертывания веб-приложений на сервере Oracle WebLogic+].

Перед тем как развернуть приложение на удаленном сервере Oracle Cloud, откройте окно 'Выходные данные' ('Окно'> 'Выходные данные'> 'Выходные данные' или нажмите Ctrl-4). Обратите внимание на вкладку 'Удаленное развертывание на Oracle Cloud' в окне выходных данных. На этой вкладке показывается ход развертывания.

image::images/output-cloud-tab.png[]


[[crud]]
== Создание приложения CRUD с JSF

IDE NetBeans и Oracle Cloud могут быть использованы при наличии серверной части базы данных Oracle, управляемой с помощью веб-приложения, размещенного на сервере Oracle WebLogic. IDE NetBeans обеспечивает возможность создания логических объектов для существующей базы данных Oracle и создания страниц JavaServer Faces (JSF) для полученных классов логических объектов. Этот сценарий требует локальной установки сервера базы данных OracleXE и сервера приложений Oracle WebLogic.

*Важно! *Удаленный сервер Oracle Cloud WebLogic не поддерживает JPA 2.0. Если на локальном сервере WebLogic поддержка JPA 2.0 не включена, следует либо отключить JPA 2.0, либо использовать поставщик сохранения JPA 1.0 для приложений CRUD.

*Примечание. *Этот документ дает лишь краткие указания по созданию классов логических объектов и страниц JSF. Подробнее см. раздел link:jsf20crud.html[+Создание приложения JavaServer Faces 2.0 CRUD на основе базы данных+].

*Создание приложения CRUD с JSF:*

1. Включите поддержку образцов схемы HR на используемом сервере баз данных OracleXE и зарегистрируйте схему в IDE NetBeans. Подробнее см. в разделе link:../ide/oracle-db.html[+Подключение к базе данных Oracle Database из IDE NetBeans+].

Используйте имя пользователя и пароль HR при регистрации схемы HR в IDE NetBeans.


[start=2]
. Создайте веб-приложение Java с использованием Java EE5 и локальной установки сервера WebLogic. Включите поддержку платформы JSF для приложений.

image::images/crudapp-eevers.png[]


image::images/crudapp-jsf.png[]

[start=3]
. В окне 'Проекты' щелкните правой кнопкой мыши корневой узел проекта и выберите 'Создать' > 'Классы логических объектов из баз данных'. Откроется мастер создания логических объектов на основе баз данных.

[start=4]
. В мастере создания логических объектов на основе баз данных выберите 'Новый источник данных' из раскрывающегося списка 'Источники данных'. Откроется диалоговое окно 'Создать источник данных'.

image::images/crudapp-newdatasource.png[]

[start=5]
. Имя этого источника данных должно совпадать с именем службы базы данных в используемой зарегистрированной учетной записи Oracle Cloud.

image::images/cloud-db-name.png[]

[start=6]
. Выберите подключение к базе данных OracleXE HR, созданное на шаге 1. Нажмите кнопку 'ОК'. Диалоговое окно 'Создать источники данных' закрывается.

image::images/create-datasource.png[]

[start=7]
. В мастере создания логических объектов на основе баз данных поле 'Доступные таблицы' заполняется именами таблиц схем HR. Выберите одну из таблиц, например EMPLOYEES, и нажмите 'Добавить'. Щелкните в остальных частях мастера, задав произвольное имя для пакета, содержащего классы логических объектов, и приняв все значения по умолчанию в других полях.

[start=8]
. В окне 'Проекты' щелкните правой кнопкой мыши корневой узел проекта и выберите 'Создать' > 'Страницы JSF' из классов логических объектов. Откроется мастер создания страниц JSF из классов логических объектов

[start=9]
. На панели 'Классы логических объектов' нажмите 'Выделить все' и нажмите кнопку 'Далее'.

[start=10]
. На панели 'Создание страниц и классов JSF' задайте соответствующие имена для пакетов и папки файла JSF и нажмите кнопку 'Готово'.

[start=11]
. В окне 'Проекты' щелкните правой кнопкой мыши корневой узел проекта и выберите пункт 'Выполнить'. IDE создает проект и развертывает его на локальном сервере WebLogic. Браузер открывается на целевой странице проекта.

Теперь у вас есть локальная версия веб-приложения Java, использующая CRUD и JSF. Можно проверить и настроить приложение локально. Когда приложение находится в конечном состоянии, разверните его в Oracle Cloud.

*Развертывание приложений CRUD/JSF приложений в Oracle Cloud*

1. В окне 'Проекты' щелкните правой кнопкой мыши корневой узел проекта и выберите 'Свойства'.
2. Выберите категорию 'Выполнить' в окне 'Свойства'. В этой категории разверните раскрывающийся список 'Сервер' и выберите удаленный сервер Oracle Cloud. Нажмите кнопку 'ОК'.

image::images/crudapp-properties.png[]

[start=3]
. В окне 'Проекты' разверните узел проекта 'Файлы конфигурации' и дважды щелкните ` persistence.xml`. Файл откроется в режиме конструктора редактора XML.

[start=4]
. В разделе 'Стратегия поколений таблицы' выберите пункт 'Создать'. 

image::images/crudapp-persistence.png[]

[start=5]
. Если на локальном сервере WebLogic включена поддержка JPA 2.0 , необходимо изменить поставщика сохранения c заданного по умолчанию EclipseLink, который использует JPA 2.0, на поставщика, который использует JPA 1.0, такого как OpenJPA.

*Примечание. *Если на локальном сервере WebLogic не включена поддержка JPA 2.0, выполняется откат EclipseLink к JPA 1.0. В этом случае не нужно менять поставщиков сохранения.


[start=6]
. В окне 'Проекты' щелкните правой кнопкой мыши корневой узел проекта и выберите пункт 'Выполнить'. В IDE создается проект и он развертывается на удаленном сервере Oracle Cloud. Можно отслеживать ход выполнения развертывания в окне 'Выходные данные' в IDE на вкладке 'Удаленное развертывание в Oracle Cloud'.

*Предостережение. *Oracle Cloud в настоящее время не поддерживает загрузку таблиц баз данных. Поэтому данные недоступны для используемых приложений при их нахождении в Oracle Cloud.


== Тестирование поддержки соответствия белому списку

Oracle Cloud не поддерживает некоторые стандартные методы API Java, такие как  ``System.exit()`` . Все разрешенные методы определяются в _whitelist_ Oracle Cloud. Во время развертывания приложений в Oracle Cloud сервер Cloud выполняет тестирование на соответствие стандартам белого списка. При нарушении соответствия стандартам белого списка облачный сервер запрещает развертывание приложения.

IDE NetBeans позволяет предотвратить появление ошибок, связанных с белым списком, путем уведомления пользователей о нарушениях стандартов белого списка при написании кода. Функция автозавершения кода ограничена белым списком, и нарушения его стандартов выделяются в коде. Выполните действие 'Проверка' в веб-приложении, развернутом на удаленном сервере Oracle Cloud, и в окне 'Выходные данные' отобразятся все нарушения соответствия стандартам белого списка.

*Проверка на соответствие стандартам белого списка:*

1. В окне 'Проекты' щелкните правой кнопкой мыши <<create-webapp,созданное веб-приложение>> и выберите 'Создать' > 'Сервлет'. Откроется мастер создания сервлетов.

image::images/new-servlet.png[]

[start=2]
. Задайте для сервлета произвольное имя, выберите существующий пакет для него и нажмите кнопку 'Готово'. Класс сервлета открывается в редакторе.

[start=3]
. Найдите метод сервлета  ``processRequest`` , введите  ``System.ex``  в теле метода и нажмите сочетание клавиш Ctrl-Space, чтобы открыть функцию автозавершения кода. Функция автозавершения кода не обеспечивает возможности завершения  ``System.exit`` , потому что  ``System.exit``  запрещен в белом списке Oracle Cloud. В IDE отображается  ``exit``  с линией, проходящей через него.

image::images/cc-failure.png[]

[start=4]
. Завершите ввод  ``System.exit(1);`` . Отобразится предупреждение. Наведите курсор на значок предупреждения, и появится подсказка о том, что  ``java.lang.System.exit``  запрещен.

image::images/whitelist-warning.png[]

[start=5]
. В окне 'Проекты' щелкните правой кнопкой мыши узел приложения и выберите 'Проверить'. Откройте окно 'Выходные данные' ('Окно' > 'Выходные данные' > 'Выходные данные' или сочетание клавиш Ctrl-4). Окно 'Выходные данные' включает в себя вкладку 'Белый список', в которой отображаются ошибки, связанные с ограничениями белого списка.

image::images/whitelist-output.png[]

[start=6]
. Откройте окно 'Элементы действий' ('Окно' > 'Элементы действий' или сочетание клавиш Ctrl-6). Нарушения соответствия стандартам белого списка отображаются как отдельная группа элементов действий.

*Совет.* Включите 'Элементы действий группы' по категориям (нижняя кнопка слева), чтобы сразу увидеть нарушения стандартов белого списка.

image::images/whitelist-tasks.png[]

[start=7]
. Попробуйте выполнить развертывание проекта. Отображается диалоговое окно предупреждения, сообщающее о том, что были выявлены нарушения стандартов белого списка, и отобразится запрос на подтверждение продолжения развертывания. Нажмите кнопку 'Нет'. Диалоговое окно исчезнет.

[start=8]
. 
В окне 'Проекты' щелкните правой кнопкой мыши узел приложения и выберите 'Свойства'. Откроется окно 'Свойства проекта' приложения. Выберите категорию 'Белые списки'. Отобразится список активных белых списков. В этом диалоговом окне можно отключить белый список.

Когда сервер веб-приложений настроен как удаленный сервер Oracle Cloud, белый список Oracle Cloud применяется как к этому проекту, так и ко всем подпроектам этого проекта. Например, для корпоративного приложения, настроенного для запуска на удаленном сервере Oracle Cloud, имеется белый список Oracle Cloud, который применяется к самому корпоративному приложению и ко всем модулям EJB и веб-приложениям, которые являются частью этого корпоративного приложения. У обоих проектов и его подпроектов имеется категория 'Белый список' в их 'Свойствах проекта'. Можно использовать диалоговое окно 'Свойства проекта' для настройки белых списков по отдельности для проектов и их отдельных подпроектов.

image::images/whitelist-properties.png[]

link:/about/contact_form.html?to=3&subject=Feedback:%20Running%20Web%20Apps%20on%20Oracle%20Cloud[+Мы ждем ваших отзывов+]

 



== См. также

Подробнее о службах Oracle Cloud см. в следующих ресурсах:

* link:https://blogs.oracle.com/javatraining/entry/oracle_cloud_development_with_netbeans[+Разработка Oracle Cloud с использованием NetBeans и Eclipse (OEPE)+] (блог Java Training Beat)
* link:https://cloud.oracle.com/mycloud/f?p=service:home:0[+Домашняя страница Oracle Cloud+]

Подробнее о разработке веб-приложений в IDE NetBeans см. в следующих ресурсах:

* link:../../trails/java-ee.html[+Учебная карта по Java EE и Java Web+]
