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

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

В данном руководстве показано, как создать простой клиент приложения и выполнить доступ к компоненту Enterprise JavaBean (EJB), развернутому на сервере 3-й версии GlassFish. В этом руководстве мы начнем с создания корпоративного приложения, содержащего простой сеансовый компонент, и проекта библиотеки классов Java, содержащей удаленный интерфейс для этого сеансового компонента. Затем мы создадим клиент приложения, выполняющий доступ к сеансовому компоненту через удаленный интерфейс в библиотеке классов. Файл JAR библиотеки классов, содержащий удаленный интерфейс, добавляется к пути класса корпоративного приложения и клиенту приложения.

*Упражнения по темам руководства*

* <<Exercise_10,Создание библиотеки классов Java >>
* <<Exercise_20,Создание модуля EJB>>
* <<Exercise_22,Создание сеансового компонента>>
* <<Exercise_23,Добавление бизнес-метода>>
* <<Exercise_24,Развертывание корпоративного приложения>>
* <<Exercise_30,Создание клиента приложения>>
* <<Exercise_32,Добавление библиотеки классов>>
* <<Exercise_30,Запуск клиента приложения>>

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

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

|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/EntAppClientEE6.zip[+готовый проект в виде архива ZIP+]. If you are using GlassFish 3.0 use link:https://netbeans.org/projects/samples/downloads/download/NetBeans%20IDE%206.8/JavaEE/entappclient.zip[+the zip archive for the IDE NetBeans 6.8 project.+]


== Создание библиотеки классов Java

В данном разделе мы создадим проект библиотеки классов Java, который будет содержать удаленный интерфейс для EJB. Этот удаленный интерфейс ведет себя как интерфейс API для EJB, используемый клиентами для связи с EJB.

Файл JAR библиотеки легко разослать всем клиентам, которым может потребоваться вызвать EJB. Клиентам, которым нужен доступ к EJB, достаточно добавить файл JAR библиотеки к пути классов проекта. В реализации EJB тот же файл JAR используется для реализации интерфейса.

1. Выберите "Файл > Новый проект"(Ctrl-Shift-N; ⌘-Shift-N в Mac), затем выберите "Библиотека классов Java" в категории "Java". Нажмите кнопку "Далее".
2. Введите *EJBRemoteInterface* в качестве имени проекта. Нажмите кнопку "Завершить".

image::images/appclient-newclasslibrary.png[title="Мастер создания проектов библиотк классов"]

После нажатия кнопки "Готово" среда IDE создаст проект библиотеки классов Java. В следующем разделе мы создадим корпоративное приложение Java EE и модуль EJB. Затем мы используем мастер для создания сеансного компонента и удаленного интерфейса к этому сеансовому компоненту в проекте библиотеки классов. Клиент приложения выполнит доступ к сеансовому компоненту сеанса через интерфейс в библиотеке классов.


== Создание модуля EJB

В этом разделе мы создадим корпоративное приложение и модуль EJB. При создании компонента EJB его следует создать как часть корпоративного приложения, сжать в архив EAR и развернуть на сервере.


=== Создание приложения уровня предприятия

В этом разделе вы будете использовать мастер создания проектов для создания корпоративного приложения, содержащего модуль EJB. Данный мастер предоставляет возможность создать модуль EJB при создании приложения.

1. Выберите File ("Файл") > New Project ("Создать проект") и затем выберите Enterprise Application ("Корпоративное приложение") в категории Java EE. Нажмите кнопку "Далее".
2. Введите *EntAppEJB* как имя проекта. Нажмите кнопку "Далее".
3. Выберите GlassFish Server в качестве сервера.
4. Убедитесь, что выбрано Create EJB Module ("Создать модуль EJB") и отмените выбор Create Web Application ("Создать модуль веб-приложения"). Нажмите кнопку "Завершить".

image::images/appclient-newentappejb.png[title="Выберите Create EJB Module (Создать модуль EJB) в мастере"]

При нажатии кнопки "Готово" среда IDE создаст корпоративное приложение и модуль EJB. В окне 'Проекты' видно, что проект модуля EJB указан в узле Java EE Modules проекта приложения корпоративного уровня.

image::images/appclient-projects-entappejb1.png[title="В окне 'Проекты' отображаются открытые проекты"]

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


=== Создание компонента сеанса

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

1. Щелкните правой кнопкой мыши проект модуля EJB и выберите New ("Создать") > Session Bean ("Сеансный компонент").
2. Введите *MySession* в поле EJB Name ("Имя EJB").
3. В поле Package ("Пакет") введите *ejb*.
4. Выберите Stateless ("Без поддержки состояния") в Session Type ("Тип сеанса").
5. Выберите параметр Remote ("Удаленный") в Create Interface ("Создать интерфейс").
6. Выберите проект *EJBRemoteInterface* из раскрывающегося списка. Нажмите кнопку "Завершить".

image::images/appclient-wizard-newsessionbean.png[title="Мастер создания компонентов сеансов"]

При нажатии "Готово" среда IDE создает сеансовый компонент в пакете  ``ejb``  модуля EJB и открывает класс в редакторе. Можно увидеть, что  ``MySession``  реализует интерфейс  ``MySessionRemote``  и что файл JAR EJBRemoteInterface был добавлен как библиотека модуля EJB.

Мастер также создает удаленный интерфейс под названием  ``MySessionRemote``  в пакете  ``ejb``  проекта EJBRemoteInterface. IDE автоматически добавляет библиотеку интерфейса API Java EE 6, необходимую интерфейсу EJB.

image::images/appclient-projects-entappejb2.png[title="Окно 'Проекты', в котором отображаются компонент сеанса и удаленный интерфейс"] 


=== Добавление бизнес-метода

В этом упражнении мы создадим простой бизнес-метод в сеансовом компоненте, возвращающий строку.

1. Щелкните правой кнопкой мыши редактор MySession и выберите Insert Code ("Вставить код") (Alt-Insert; Ctrl-I на Mac), затем выберите Add Business Method ("Добавить бизнес-метод").
2. Введите *getResult* в поле Method Name ("Имя метода") и String ("Строка") в поле Return Type ("Тип возврата"). Нажмите кнопку "ОК".
3. Внесите нижеприведенные изменения, чтобы метод  ``getResult``  возвращал строку.

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


[source,java]
----

@Stateless
public class MySession implements MySessionRemote {

    public String getResult() {
        return *"This is My Session Bean"*;
    }
}
----


. Сохраните изменения.

Теперь у нас есть корпоративное приложение с простым компонентом EJB, предоставляемым через удаленный интерфейс. У нас также имеется независимая библиотека классов, содержащая интерфейс EJB, которую можно разослать другим разработчикам. Разработчики могут добавлять библиотеку к своим проектам, если им нужна связь с EJB, предоставляемым через удаленный интерфейс, но не нужны исходные коды для EJB. При изменении кода для EJB достаточно распространить JAR обновленной библиотеки классов, если изменения затронули любой из интерфейсов.

При использовании диалогового окна "Добавить бизнес-метод" среда IDE автоматически включает метод в удаленный интерфейс.


=== Развертывание корпоративного приложения

Теперь корпоративное приложение можно собрать и запустить. При запуске приложения среда IDE развернет архив EAR на сервере.

1. Щелкните правой кнопкой мыши корпоративное приложение EntAppEJB и выберите Deploy ("Развернуть").

После выбора "Развернуть" среда IDE собирает корпоративное приложение и разворачивает архив EAR на сервере. Если взглянуть в окно Files ("Файлы"), можно заметить, что файл JAR EJBRemoteInterface развернут вместе с приложением.

Если развернуть узел 'Приложения' сервера GlassFish в окне 'Службы', можно увидеть, что компонент EntAppEJB развернут.


== Создание клиента приложения

В этом разделе мы создадим клиент корпоративного приложения. При создании клиента приложения проекту нужна библиотека классов Java EJBRemoteInterface в качестве библиотеки, чтобы установить ссылку на EJB.

При запуске корпоративного приложения среда IDE пакетирует клиент приложений и файл JAR библиотеки классов Java в архив EAR. Файлы JAR библиотеки должны быть упакованы в файл EAR вместе с клиентом приложения, если необходим доступ к ним из клиента приложения.


=== Создание приложения уровня предприятия

В этом упражнении мы используем мастер создания проектов, чтобы создать проект клиента приложения. Если развертывание выполняется на сервере GlassFish 3.1 или 4.x, клиент приложения можно создать и запустить как отдельный проект. Клиент приложения больше не надо будет развертывать и запускать как часть корпоративного приложения.

NOTE:  При развертывании на GlassFish 3.0.1, необходимо создать клиентское приложение в виде модуля в проекте корпоративного приложения и запустить корпоративное приложение.

1. Выберите Файл > Создать проект и затем выберите "Клиент корпоративного приложения" в категории Java EE. Нажмите кнопку "Далее".
2. Введите *EntAppClient* в поле Project Name ("Имя проекта"). Нажмите кнопку "Далее".
3. Выберите GlassFish Server в качестве сервера. Нажмите кнопку "Завершить".

Обратите внимание, что добавлять проект к корпоративному приложению необязательно.

image::images/appclient-wizard-newentappclient.png[title="Создание клиента приложения, выбранного в мастере создания проектов"]

При нажатии "Готово" IDE создаст проект клиента приложения и откроет  ``Main.java``  в редакторе.


=== Добавление библиотеки классов

Теперь следует добавить библиотеку классов, содержащую удаленный интерфейс, к пути классов проекта, чтобы позволить клиенту приложения ссылаться на EJB. Проект библиотеки классов теперь открыт, так что диалоговое окно "Вызвать компонент корпоративного уровня" теперь можно использовать для помощи в генерировании кода с целью вызова EJB.

Если проект библиотеки классов не открыт, вы можете добавить библиотеку классов для проекта в окне 'Проекты', щелкнув правой кнопкой мыши узел 'Библиотеки' узла и выполнив поиск файла JAR проекта EJBRemoteInterface.

1. Разверните узел Source Packages ("Пакеты исходного кода") проекта EntAppClient и откройте  ``Main.java``  в редакторе.
2. Щелкните правой кнопкой мыши исходный код и выберите Insert Code ("Вставить код") (Alt-Insert; Ctrl-I на Mac), затем выберите Call Enterprise Bean ("Вызвать компонент корпоративного уровня"), чтобы открыть диалоговое окно вызова компонента корпоративного уровня.
3. Выберите узел проекта EntAppEJB и затем выберите MySession. Нажмите кнопку "ОК".

image::images/appclient-callenterprise.png[title="Диалоговое окно 'Вызвать компонент корпоративного уровня'"]

В данном диалоговом окне автоматически выбирается тип интерфейса Remote ("Удаленный"). При нажатии кнопки OK среда IDE добавит следующую аннотацию к  ``Main.java`` .


[source,java]
----

@EJB
private static MySessionRemote mySession;
----

Среда IDE также автоматически добавит EJBRemoteInterface как библиотеку проекта.



. Измените  ``главный``  метод извлечения строки метода  ``getResult``  посредством интерфейса MySessionRemote. Сохраните изменения.

[source,java]
----

public static void main(String[] args) {
        *System.err.println("result = " + mySession.getResult());*
    }
----


== Запуск клиента приложения

Теперь клиент приложения можно запустить, собрав и развернув проект EntAppClient.

1. Щелкните правой кнопкой мыши проект EntAppClient в окне Projects ("Проекты") и выберите Run ("Запустить").

Кроме того, вы можете расширить исходный пакет и щелкнуть правой кнопкой мыши класс  ``Main.java``  и выбрать 'Выполнить файл'.

После выбора Run ("Запустить") IDE собирает проект клиента приложения и разворачивает архив JAR на сервере. Сообщение от клиента приложения можно увидеть в окне вывода.

image::images/appclient-buildoutput.png[title="Результат в окне вывода"]

Если необходимо создать дополнительные EJB, можно просто добавить новые удаленные интерфейсы EJB к проекту библиотеки классов EJBRemoteInterface.

link:/about/contact_form.html?to=3&subject=Feedback:%20Creating%20an%20Application%20Client[+Мы ждем ваших отзывов+]



== Что дальше?

For more information about using IDE NetBeans to develop Java EE applications, see the following resources:

* link:javaee-intro.html[+Введение в технологию Java EE +]
* link:javaee-gettingstarted.html[+Начало работы с приложениями Java EE+]
* link:../../trails/java-ee.html[+Учебная карта по Java EE и Java Web+]

Дополнительные сведения о разработке компонентов корпоративного уровня EJB можно найти в link:http://download.oracle.com/javaee/6/tutorial/doc/[+Руководстве по Java EE 6+].

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+].

