blob: a26c189c1a466bd2c24820e177c19b018c0c35be [file] [log] [blame]
//
// 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.
//
= Начало работы с приложениями Java EE
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Начало работы с приложениями Java EE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Начало работы с приложениями Java EE
В этом документе содержится краткое описание некоторых возможностей, добавленных в спецификацию Java Enterprise Edition 6 (Java EE 6). В качестве иллюстрации новых возможностей в этом учебном курсе используется пример создания простого веб-приложения Java EE, содержащего фасад компонента сеанса без сохранения состояния EJB 3.1 для класса сущностей. Для создания класса сущностей и сеансного компонента в среде IDE используются мастеры. В созданном мастером коде используются запросы, определенные в интерфейсе Criteria API, который является частью JPA 2.x и входит в состав спецификации Java EE 6. Затем создается управляемый компонент с именем, имеющий доступ к фасаду сеанса и уровню представления, на котором используется инфраструктура вида Facelets, как указано в спецификации JSF 2.x.
Этот учебный курс основан на публикации в блоге link:http://www.adam-bien.com/roller/abien/entry/simplest_possible_jsf_2_ejb[+ Простейший из возможных компонентов JSF 2 / EJB 3.1 / JPA - с развертыванием WAR+] (автор Адам Бьен (Adam Bien)). Дополнительные примеры по Java EE examples доступна в проекте Адама Бьена по Kenai link:http://kenai.com/projects/javaee-patterns[+ Шаблоны и испытанные приемы Java EE+] и в его книге "Шаблоны Java EE в реальном мире - обдумывая заново проверенные приемы", которая доступна на link:http://press.adam-bien.com[+http://press.adam-bien.com+].
*Упражнения по темам руководства*
* <<Exercise_1,Создание проекта веб-приложения>>
* <<Exercise_2,Создание класса сущностей и фасада сеанса>>
* <<Exercise_2a,Создание класса сущностей>>
* <<Exercise_2b,Создание фасада сеанса>>
* <<Exercise_3,Создание управляемого компонента JSF и страниц JSF>>
* <<Exercise_3a,Создание управляемого компонента>>
* <<Exercise_3b,Изменение страницы-указателя>>
* <<Exercise_3c,Создание страницы результатов>>
* <<Exercise_4,Выполнение проекта>>
* <<Exercise_5,Загрузка проекта решения>>
*Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.*
|===
|Программное обеспечение или материал |Требуемая версия
|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Версия 7.2, 7.3, 7.4, 8.0, Java EE
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 7 или 8
|GlassFish Server Open Source Edition 3.1.2.2 |3.x, 4.x
|===
*Предпосылки*
Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:
* Программирование на Java
* IDE NetBeans
Можно загрузить link:https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/SimpleEE6App72.zip[+готовый проект в виде архива ZIP+].
== Создание проекта веб-приложения
В этом упражнении создается простое веб-приложение. При создании веб-приложения укажите в качестве целевого контейнера Java EE сервер GlassFish. Сервер GlassFish совместим с Java EE и включает в себя библиотеки JSF 2.x, необходимые для этого приложения.
В мастере создания проектов в качестве версии Java EE можно выбрать Java EE 6 Web или Java EE 7 Web. Java EE 6 Web и Java EE 7 Web являются упрощенными профилями Java EE 6, которые содержат подмножество полной платформы Java EE. Профили Java EE Web разработаны для веб-приложений, не требующих расширенных технологий Java EE, таких как поддержка удаленных интерфейсов, полная спецификация EJB 3.1 и API-интерфейс службы передачи сообщений Java (JMS).
Веб-профили поддерживают обработку транзакций и управление сохранением состояния, которые часто используются в корпоративных веб-приложениях. Профили Java EE Web можно использовать для веб-приложений, в которых применяются компоненты сеансов с локальным интерфейсом или без интерфейса. При использовании в приложении удаленного интерфейса необходим полный профиль Java EE.
1. Выберите 'Файл' > 'Создать проект' (Ctrl-Shift-N; ⌘-Shift-N в Mac) в главном меню.
2. Выберите "Веб-приложение" из категории "Java Web" и нажмите кнопку "Далее".
3. Введите *SimpleEE6App* в качестве имени проекта и укажите местоположение проекта.
4. Снимите флажок "Использовать отдельную папку", если он установлен. Нажмите кнопку "Далее".
рамках этого руководства копирование библиотек проекта в отдельную папку нецелесообразно, поскольку совместное использование библиотек с другими пользователями или проектами не требуется.)
. Выберите сервер GlassFish и укажите Java EE 6 или Java EE 7 в качестве версии Java EE. Нажмите кнопку "Далее".
image::images/newappwizard.png[title="Панель 'Сервер и настройки' в мастере создания проектов"]
. Выберите в панели "Платформы" JavaServer Faces. Нажмите кнопку "Завершить".
По умолчанию при разработке веб-приложения Java EE, развертываемого на сервере GlassFish, в среде IDE будет выбрана библиотека JSF 2.x. Версия используемой по умолчанию библиотеки JSF зависит от версии, поставляемой в комплекте с сервером GlassFish. Библиотека JSF 2.x позволяет использовать Facelets в качестве языка страниц и обеспечивает поддержку JSF 1.2 и JSP.
image::images/newappwizard2.png[title="Панель 'Платформы' мастера создания проектов"]
При нажатии кнопки "Завершить" проект будет создан в среде IDE, который откроется в окне "Проекты". В среде IDE автоматически создается и открывается в редакторе страница ``index.xhtml`` .
== Создание класса сущностей и фасада сеанса
В этом разделе будет создан класс сущностей и фасад сеанса для класса сущностей. Класс сущностей это простой старый объект Java (Plain Old Java Object, POJO), простой класс Java, идентифицированный аннотацией ``@Entity`` как сущность. Начиная со спецификации Java EE 5 классы сущностей можно использовать в качестве объектов с сохраняемым состоянием для представления таблиц в базе данных. Интерфейс Java Persistence API позволяет использовать сохранение состояния в веб-приложениях без необходимости создания модуля EJB.
Фасад сеанса для класса сущностей в этом приложении является сеансным компонентом без сохранения состояния. Архитектура Enterprise JavaBean (EJB) 3.1, представленная как часть спецификации Java EE 6, позволяет создавать компоненты сеансов без бизнес-интерфейсов, которые требовались в EJB 3.0. Спецификация Java EE 6 также допускает упаковку компонентов EJB напрямую в архив WAR. Благодаря этому упрощается разработка небольших приложений за счет исключения необходимости создания отдельных модулей EJB, которые запаковываются как архив JAR в архив EAR. Однако для больших приложений J2EE, которые распределяются на разных машинах, остается необходимость в создании архивов EAR для отделения бизнес-логики от уровня представления.
Подробные сведения об использовании EJB 3.1 в среде IDE приведены в учебном курсе link:javaee-entapp-ejb.html[+Создание приложения J2EE с помощью EJB 3.1+].
Дополнительные сведения о классах сущностей см. в главе link:http://docs.oracle.com/javaee/7/tutorial/doc/persistence-intro.htm[+Введение в API-интерфейс сохранения состояния Java+] в link:http://download.oracle.com/javaee/7/tutorial/doc/[+Учебном курсе по Java EE 7+].
Дополнительные сведения о компонентах сеансов см. в главе link:http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro002.htm[+Что такое компонент сеанса?+] в link:http://download.oracle.com/javaee/7/tutorial/doc/[+Руководстве по Java EE 7+].
=== Создание класса сущности
В этом упражнении с помощью мастера создания класса сущностей будет создан простой класс сущностей с сохраняемым состоянием. Также будет описан мастер создания блока сохранения состояния, которая определяет источник данных и диспетчер сущностей, используемые в приложении. Будет добавлено одно поле в класс для представления данных в таблице и созданы методы получения и установки для нового поля.
Класс сущностей должен иметь первичный ключ. При создании класса сущностей с помощью мастера в среде IDE по умолчанию создается поле ``id`` и создается аннотация ``@Id`` для объявления этого поля в качестве первичного ключа. Также в среде IDE добавляется аннотация ``@GeneratedValue`` и указывается стратегия создания ключей для первичного поля id.
Использование в проекте интерфейса Java Persistence значительно упрощает разработку приложения в силу отсутствия необходимости настройки дескрипторов развертывания для определения информации относительно объектно-реляционного сопоставления для сохраняющих состояние полей или свойств. Вместо этого можно использовать аннотации для определения этих свойства непосредственно в простом классе Java.
Сохранением состояния объекта управляет интерфейс API EntityManager. Интерфейс API EntityManager обрабатывает контекст сохранения состояния, а каждый контекст сохранения состояния представляет собой группу экземпляров объекта. При разработке приложения для обозначения экземпляра контекста с сохранением состояния для классов сущностей к классу можно добавить аннотации. В дальнейшем жизненный цикл экземпляров объекта управляется контейнером.
Для создания класса сущностей выполните следующие действия.
1. Щелкните узел проекта правой кнопкой мыши и выберите команду "Создать" > "Другие".
2. Выберите "Класс сущностей" в категории "Сохранение состояния". Нажмите кнопку "Далее".
3. В поле "Имя класса" введите *Message*.
4. В поле "Пакет" введите *entities*.
5. Выберите команду "Создать блок сохранения состояния". Нажмите кнопку "Далее".
6. Выберите источник данных (например, выберите ``jdbc/sample`` , если необходимо использовать JavaDB).
Источник данных для ``jdbc/sample`` находится в составе пакета среды IDE при установке среды IDE и сервера приложений GlassFish. Однако можно указать другой источник данных, если это необходимо.
Можно сохранить другие параметры по умолчанию (имя блока сохранения состояния, поставщик сохранения состояния EclipseLink). Убедитесь в том, что для блока сохранения состояния используется интерфейс API транзакций Java и что для стратегии создания таблиц установлено значение "Создать", т. е. таблицы на основе классов сущностей создаются при развертывании приложения.
. В мастере создания блока сохранения состояния нажмите кнопку "Завершить".
При нажатии кнопки "Завершить" в среде IDE будет создан класс сущностей, который откроется в редакторе. Как видно из примера, в среде IDE было создано поле id ``private Long id;`` , и для поля созданы аннотации ``@Id`` и ``@GeneratedValue(strategy = GenerationType.AUTO)`` .
. В редакторе добавьте поле ``message`` (выделено полужирным шрифтом) под полем ``id`` .
[source,java]
----
private Long id;
*private String message;*
----
. Щелкните правой кнопкой мыши в редакторе и выберите команду "Вставить код" (Alt-Insert; Ctrl-I для Mac), а затем "Получение и установка".
. В диалоговом окне "Создание методов получения и установки" выберите поле ``message`` и нажмите кнопку "Создать".
В среде IDE будут созданы методы получения и установки для поля ``message`` .
image::images/getters-dialog.png[title="Мастер создания блоков сохранения состояния"]
. Сохраните изменения.
Класс сущностей представляет собой таблицу в базе данных. При запуске этого приложения автоматически будет создана таблица базы данных для сообщения. Таблица будет состоять из столбцов ``id`` и ``message`` .
Если проанализировать блок сохранения состояния в редакторе XML, можно увидеть, что в приложении используется интерфейс API транзакций Java (JTA) ( ``transaction-type="JTA"`` ). Это указывает на то, что управление жизненным циклом сущностей в контексте сохранения состояния осуществляется контейнером. В результате требуется меньше строк кода, так как жизненный цикл сущностей управляется контейнером, а не приложением. Подробные сведения об использовании JTA для управления транзакциями приведены в документации по link:http://www.oracle.com/technetwork/java/javaee/jta/index.html[+интерфейсу Java Transaction API+].
=== Создание фасада сеанса
В этом упражнении будет использоваться мастер создания фасада сеанса без сохранения состояния для сущности Message. Согласно спецификации EJB 3.1. теперь бизнес-интерфейсы для сеансных компонентов не являются обязательными. В этом приложении, где клиент, имеющий доступ к компоненту, является локальным клиентом, для отображения компонента существует возможность использования представления с локальным интерфейсом или без интерфейса.
Для создания сеансного компонента выполните следующие шаги.
1. Щелкните узел проекта правой кнопкой мыши и выберите команду "Создать" > "Другие".
2. Выберите "Сеансные компоненты для сущностных классов" из категории Enterprise JavaBeans. Нажмите кнопку "Далее".
3. Выберите сущность ``Message`` и нажмите кнопку "Добавить". Нажмите кнопку "Далее".
4. В поле "Пакет" введите *boundary*. Нажмите кнопку "Завершить".
Обратите внимание на то, что создавать бизнес-интерфейс для сеансного компонента не требуется. Вместо этого в данном приложении компонент будет отображаться для локально управляемого компонента в представлении без интерфейса.
image::images/sessionwizard.png[title="Компоненты Bean сеанса для мастера классов сущностей"]
Когда вы нажмете "Готово", среда IDE создаст фасадный класс сеанса ``MessageFacade.java`` и ``AbstractFacade.java`` и откроет файлы в редакторе. Как вы увидите в созданном коде, аннотация ``@Stateless`` используeтся для объявления ``MessageFacade.java`` сеансным компонентом без состояния. ``MessageFacade.java`` является расширением ``AbstractFacade.java`` , который содержит бизнес-логику и управляет транзакцией.
[source,java]
----
@Stateless
public class MessageFacade extends AbstractFacade<Message> {
@PersistenceContext(unitName = "SimpleEE6AppPU")
private EntityManager em;
----
При создании фасада для сущности с помощью мастера в среде IDE по умолчанию добавляется аннотация ``PersistenceContext`` ( ``@PersistenceContext(unitName = "SimpleEE6AppPU")`` ) для внедрения ресурса диспетчера сущностей в элемент сеансного компонента и для определения имени блока сохранения состояния. В этом примере имя блока сохранения состояния объявлено явно, но имя не является обязательным, если в приложении используется только один блок сохранения состояния.
Среда IDE также создает методы в ``AbstractFacade.java`` для создания, изменения, удаления и нахождения сущностей. В интерфейсе API EntityManager определяются методы взаимодействия с контекстом сохранения состояния. Как видите, среда IDE генерирует некоторые распространенные методы запросов, используемые по умолчанию, которые можно использовать для нахождения объектов сущностей. В методах ``findAll`` , ``findRange`` и ``count`` используются методы, определенные в интерфейсе API Criteria для создания запросов. API-интерфейс Criteria входит в спецификацию JPA 2.x, которая в свою очередь является частью спецификации Java EE 6.
== Создание управляемого компонента JSF и страниц JSF
В этом разделе представлена информация о том, как с помощью JavaServer Faces (JSF) 2.x создать уровень представления для приложения и управляемый базовый компонент, используемый на страницах JSF. Спецификация JSF 2.x делает возможным использование Facelets в качестве предпочтительной технологии представлений для приложений на основе JSF. Начиная с версии JSF 2.x можно использовать аннотацию ``@ManagedBean`` в исходном коде для объявления класса управляемого компонента. Для объявления управляемых компонентов JSF больше не требуется добавлять записи в файл ``faces-config.xml`` . Для получения доступа к методам в управляемом компоненте можно использовать имена компонентов на страницах JSF.
Подробные сведения о поддержке спецификации JavaServer Faces 2.x в среде IDE см. в разделе link:../web/jsf20-support.html[+Поддержка JSF 2.x в IDE NetBeans+].
Подробные сведения о спецификации JavaServer Faces 2.x см. в главе link:http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm[+Технология JavaServer Faces+] учебного курса по Java EE 7.
=== Создание управляемого компонента
В этом упражнении будет создан простой управляемый компонент JSF, используемый для получения доступа к фасаду сеанса. Спецификация JSF 2.x позволяет использовать аннотации в классе компонента для определения класса как управляемого компонента JSF, а также указания области и имени компонента.
Для создания управляемого компонента выполните следующие шаги.
1. Щелкните узел проекта правой кнопкой мыши и выберите команду "Создать" > "Другие".
2. Выберите "Управляемый компонент JSF" из категории "JavaServer Faces". Нажмите кнопку "Далее".
3. В поле "Имя класса" введите *MessageView*.
Имя управляемого компонента ``MessageView`` используется в качестве значения для ``inputText`` и ``commandButton`` на странице JSF ``index.xhtml`` при вызове методов в компоненте.
. В поле "Пакет" введите *my.presentation*.
. В поле "Имя", используемое для управляемого компонента, введите *MessageView*.
*Примечание.* При создании управляемого компонента с помощью мастера, IDE по умолчанию назначает имя компоненту на основе имени класса компонента, при этом имя будет начинаться с маленькой буквы. В данном руководстве и для демонстрационных целей вы назначаете базовому элементу имя, начинающееся с заглавной буквы. При ссылке на компонент на страницах JSF вы будете использовать ``MessageView`` вместо ``messageView`` . Если вы не назначали имени, то на странице JSF будет использоваться по умолчанию ``messageView`` .
. Установите контекст для запроса. Нажмите кнопку "Завершить".
image::images/newjsfbean.png[title="Мастер создания новых управляемых компонентов JSF"]
При нажатии кнопки "Готово" в среде IDE создается класс компонента, который затем открывается в редакторе. В окне 'Проекты' отобразятся следующие файлы.
image::images/projectswindow.png[title="В окне 'Проекты' отображается структура файла"]
В редакторе можно увидеть, что в среде IDE добавлены аннотации ``@ManagedBean`` и ``@RequestScoped`` и имя компонента.
[source,java]
----
@ManagedBean(name="MessageView")
@RequestScoped
public class MessageView {
/** Creates a new instance of MessageView */
public MessageView() {
}
}
----
Теперь добавляем аннотацию ``@EJB`` для использования учета зависимостей, чтобы получить ссылку на сеансный компонент MessageFacade. Вы также будете вызывать методы ``findAll`` и ``создавать`` , отображаемые на фасаде. Автозавершение кода среды IDE помогает при вводе методов.
1. Щелкните правой кнопкой мыши в редакторе и выберите команду "Вставить код" (Alt-Insert; Ctrl-I для Mac), затем во всплывающем окне выберите "Вызов компонента EJB".
2. В диалоговом окне "Вызов компонента EJB" выберите MessageFacade. Нажмите кнопку "ОК".
image::images/callbean.png[title="Диалоговое окно 'Вызвать компонент корпоративного уровня'"]
При нажатии кнопки "ОК" в среде IDE добавляется следующий код (выделено полужирным шрифтом) для ввода компонента.
[source,java]
----
public class MessageView {
/** Creates a new instance of MessageView */
public MessageView() {
}
// Injects the MessageFacade session bean using the @EJB annotation
*@EJB
private MessageFacade messageFacade;*
}
----
. Для создания нового экземпляра добавьте следующий код.
[source,java]
----
/** Creates a new instance of MessageView */
public MessageView() {
this.message = new Message();
}
----
. Добавьте следующий код к классу.
[source,java]
----
// Creates a new field
private Message message;
// Calls getMessage to retrieve the message
public Message getMessage() {
return message;
}
// Returns the total number of messages
public int getNumberOfMessages(){
return messageFacade.findAll().size();
}
// Saves the message and then returns the string "theend"
public String postMessage(){
this.messageFacade.create(message);
return "theend";
}
----
. Щелкните правой кнопкой мыши в области редактора и выберите команду 'Исправить операторы импорта' (Alt-Shift-I; ⌘-Shift-I в Mac) и сохраните изменения.
Можно использовать автозавершение кода в редакторе, упрощающее ввод кода.
Обратите внимание, что метод ``postMessage`` возвращает строку "theend". Спецификация JSF 2.x допускает использование правил неявных переходов в приложениях, использующих технологию Facelets. В таком приложении правила переходов не настраиваются в ``faces-config.xml`` . Вместо этого обработчик переходов пытается найти подходящую страницу в приложении. В этом случае обработчик переходов пытается найти страницу с именем ``theend.xhtml`` при вызове метода ``postMessage`` .
=== Изменение страницы-указателя
В этом упражнении будет выполнено несколько простых изменений страницы ``index.xhtml`` для добавления компонентов пользовательского интерфейса. Выполняется добавление формы с текстовым полем для ввода и кнопкой.
. Откройте в редакторе ``index.xhtml`` .
. Измените файл для добавления следующей простой формы между тегами ``<h:body>`` .
[source,xml]
----
<h:body>
*<f:view>
<h:form>
<h:outputLabel value="Message:"/><h:inputText value="#{MessageView.message.message}"/>
<h:commandButton action="#{MessageView.postMessage}" value="Post Message"/>
</h:form>
</f:view>*
</h:body>
----
Автозавершение кода JSF может помочь при вводе кода.
image::images/jsfcodecompletion1.png[title="Автозавершение кода в редакторе исходного кода"]
*Примечание.* При копировании и вставке кода в файл отображается предупреждение на левом поле рядом со строков, содержащей ``<f:view>`` . Вы можете поместить курсор вставки на строку и нажать сочетание клавиш Alt-пробел для открытия подсказки по исправлению ошибки. Отображается подсказка о том, что требуется добавить объявление библиотеки ``xmlns:f="http://xmlns.jcp.org/jsf/core"`` .
. Сохраните изменения.
Компоненты ``inputText`` и ``commandButton`` вызывают методы в управляемом компоненте JSF с именем ``MessageView`` . Метод ``postMessage`` возвращает "theend", а обработчик переходов выполняет поиск страницы с именем ``theend.xhtml`` .
=== Создание страницы результатов
В этом упражнении будет создана страница JSF ``theend.xhtml`` . Эта страница будет отображаться при нажатии пользователем кнопки "Отправить сообщение" в ``index.xhtml`` и при вызове метода ``postMessage`` в управляемом компоненте JSF.
1. Щелкните узел проекта правой кнопкой мыши и выберите команду "Создать" > "Другие".
2. В категории "JavaServer Faces" выберите "Страница JSF". Нажмите кнопку "Далее".
3. В поле "Имя файла" введите *theend*.
4. Убедитесь в том, что флажок "Facelets" установлен. Нажмите кнопку "Завершить".
image::images/result-jsf-page.png[title="Создание файла theend JSF в мастере создания файлов JSF"]
. Измените файл посредством ввода следующего кода между тегов <h:body>.
[source,xml]
----
<h:body>
*<h:outputLabel value="Thanks! There are "/>
<h:outputText value="#{MessageView.numberOfMessages}"/>
<h:outputLabel value=" messages!"/>*
</h:body>
----
Когда вы начинаете вводить данные, среда IDE автоматически добавляет определение библиотеки тегов ``xmlns:h="http://xmlns.jcp.org/jsf/html"`` в файл для элементов JSF.
== Запуск приложения
Кодировка приложения завершена. Теперь можно протестировать приложение в браузере.
1. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите "Выполнить".
При выборе команды "Выполнить" в среде IDE происходит сборка и развертывание приложения, и в браузере открывается ``index.xhtml`` .
. Введите сообщение в текстовое поле. Нажмите кнопку "Отправить сообщение".
image::images/browser1.png[title="Приложение в браузере"]
При нажатии кнопки "Отправить сообщение" сообщение сохраняется в базе данных, и извлекается и отображается число сообщений
image::images/browser2.png[title="Приложение в браузере с отображением результатов"]
== Загрузка проекта решения
Простые проекты, используемые в этом руководстве, можно загрузить следующими способами.
* Загрузите link:https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/SimpleEE6App72.zip[+архив завершенного проекта в формате zip+].
* Выполните проверку исходных файлов проекта на выходе из примеров NetBeans, выполнив перечисленные ниже действия.
1. Выберите в главном меню "Группа > Subversion > Проверить".
2. В диалоговом окне "Проверка" введите следующий URL-адрес репозитория:
``https://svn.netbeans.org/svn/samples~samples-source-code``
Нажмите кнопку "Далее".
. Нажмите кнопку Browse ("Обзор") для открытия диалогового окна Browse Repository Folders ("Обзор папок репозитория").
. Разверните корневой узел и выберите *samples/javaee/SimpleEE6App*. Нажмите кнопку "ОК".
. Укажите локальную папку для исходных файлов (папка должна быть пустой).
. Нажмите кнопку "Завершить".
После нажатия кнопки "Готово" среда IDE инициализирует локальную папку в качестве репозитория Subversion и выполняет проверку исходных файлов проекта на выходе.
. Щелкните команду "Открыть проект" в диалоговом окне, которое появится после завершения проверки.
*Примечания.*
* Для получения исходных файлов на редактирование требуется клиент Subversion. For more about installing Subversion, see the section on link:../ide/subversion.html#settingUp[+Setting up Subversion+] in the link:../ide/subversion.html[+Guide to Subversion in IDE NetBeans+].
link:/about/contact_form.html?to=3&subject=Feedback:%20Getting%20Started%20with%20Java%20EE%206%20Applications[+Отправить отзыв по этому учебному курсу+]
== Дополнительные сведения
For more information about using IDE NetBeans to develop Java EE applications, see the following resources:
* link:javaee-intro.html[+Введение в технологию Java EE +]
* link:../web/jsf20-support.html[+Поддержка JSF 2.x в IDE NetBeans+]
* link:../../trails/java-ee.html[+Учебная карта по Java EE и Java Web+]
Подробные сведения об использовании технологий Java EE для развертывания приложений см. в link:http://download.oracle.com/javaee/7/tutorial/doc/[+Учебном курсе по Java EE 7+].
To send comments and suggestions, get support, and keep informed on the latest developments on the IDE NetBeans Java EE development features, link:../../../community/lists/top.html[+join the nbj2ee mailing list+].