corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Создание клиента приложения в среде IDE NetBeans

В этом руководстве продемонстрированы способы написания и развертывания несложного клиента приложения, используемого для доступа к Enterprise JavaBean (EJB). В этом руководстве продемонстрированы способы доступа к компонентам EJB на базе платформы Java EE 5 (EJB 3.0) и платформы J2EE 1.4 (EJB 2.x).

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

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

Предполагаемая продолжительность: 30 минут

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

Содержимое этой страницы относится к среде IDE NetBeans 6.0 и 6.1

Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans Web & Java EE, версия 6.1 или
версия 6.0
Комплект для разработчика на языке Java (JDK) версия 6 или
версия 5
GlassFish V2 или
Sun Java Systems Application Server
UR1 или UR2

Для работы с этим руководством потребуется зарегистрировать в IDE локальный экземпляр сервера приложений Glass Fish/Sun Java System Application Server. Сервер приложений GlassFish поставляется вместе со средой IDE. Если сервер приложений был выбран для установки при установке среды IDE, то этот сервер уже должен быть зарегистрирован в среде IDE.

Предварительные условия

Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:

  • Программирование на Java
  • Среда IDE NetBeans

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

Во-первых, потребуется создать приложения уровня предприятия Java EE 5 под именем "EnterpriseAppEE5". Параллельно с приложением уровня предприятия будет создан клиент приложения.

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

  1. В главном меню выберите "File > New Project".
  2. Выберите "Enterprise Application" в категории "Enterprise" и нажмите кнопку "Next".
  3. В качестве имени проекта введите EnterpriseAppEE5 и укажите местоположение проекта.
  4. Снимите флажок "Use Dedicated Folder", если он выбран.
    (Этот параметр доступен в среде IDE NetBeans 6.1. В рамках этого руководства копирование библиотек проекта в выделенную папку лишено смысла, поскольку совместное использование библиотек с другими пользователями или проектами не потребуется.)
    Нажмите кнопку "Next".
  5. Выберите сервер "GlassFish" и установите в поле "Java EE Version" версию "Java EE 5".
  6. Установите флажки "Create EJB Module" и Create Application Client Module", если они не установлены.
    Флажок "Create Web Application Module" можно снять, так как веб-модуль в этом руководстве не потребуется.
  7. Нажмите кнопку "Finish".

Создание сеансного компонента в приложении уровня предприятия

Теперь потребуется создать компонент EJB SessionBean в модуле EJB. Для создания SessionBean необходимо выполнить следующие действия:

  1. Щелкните правой кнопкой мыши модуль "EJB EnterpriseAppEE5-ejb" в окне "Project" и выберите "New > Other" для открытия мастера создания файла.
  2. Выберите "Session Bean" в категории "Enterprise" и нажмите кнопку "Next".
  3. В качестве имени EJB введите Session, а в качестве пакета – ejb.
  4. Выберите "Stateless" в поле "Session Type" и укажите "Remote" в качестве типа создаваемого интерфейса.
    (Можно отменить выбор локального интерфейса, так как в этом руководстве будет использоваться только удаленный интерфейс.)
    Нажмите кнопку "Finish".

    После нажатия кнопки "Finish" класс компонента SessionBean.java открывается в редакторе исходного кода.

  5. Щелкните правой кнопкой мыши в редакторе исходного кода и выберите "EJB Methods > Add Business Method" для создания бизнес-метода компонента.
  6. В диалоговом окне "Add Business Method" введите getResult для имени, в поле "Return Type" выберите "String" и укажите тип интерфейса "Remote". Нажмите кнопку "OK".
  7. В SessionBean.java измените метод getResult на следующий:
    public String getResult() {
        return "This is EJB 3.0 Bean";
    }
  8. Сохраните изменения.

Вызов сеансного компонента из клиента приложения

Теперь необходимо добавить код в клиент приложения, использующийся для вызова компонента EJB. Для изменения клиента приложения потребуется выполнить следующие действия:

  1. В окне "Projects" разверните "EnterpriseAppEE5-app-client > Source Packages > enterpriseappee5" и дважды щелкните Main.java для открытия файла в редакторе исходного кода.
  2. Щелкните правой кнопкой мыши в редакторе исходного кода и выберите "Enterprise Resources > Call Enterprise Bean".
  3. В диалоговом окне "Call Enterprise Bean" разверните узел "EnterpriseAppEE5-ejb" и в качестве необходимого вызываемого компонента выберите SessionBean и "Remote" в качестве "Referenced Interface". Нажмите кнопку "OK".
    При нажатии кнопки "OK" для вызова сеансного компонента к Main.java добавляется следующая аннотация:
    @EJB
    private static SessionRemote sessionBean;
  4. Для получения некоторых простых результатов измените метод main на следующий код. Для вывода сообщения в окне "Output" потребуется использовать System.err.println.
    public static void main(String[] args) {
        System.err.println("result=" + sessionBean.getResult());
  5. Сохраните изменения.

Настройка приложения уровня предприятия

Практически все уже сделано; остается только объявить клиент приложения модулем, который должен запускаться при запуске приложения уровня предприятия. Возможно, такая настройка произведена автоматически, так как клиент приложения и приложение уровня предприятия были созданы одновременно.

Для настройки приложения уровня предприятия необходимо выполнить следующие действия:

  1. Щелкните правой кнопкой мыши узел проекта приложения уровня предприятия "EnterpriseAppEE5" в окне "Projects" и выберите "Properties".
  2. В диалоговом окно "Project Properties" выберите "Run".
  3. Для идентификатора URI модуля клиента выберите "EnterpriseAppEE5-app-client" (он должен быть выбран по умолчанию). Нажмите кнопку "OK".

Выполнение приложения уровня предприятия

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

  1. В окне "Projects" щелкните правой кнопкой мыши "EnterpriseAppEE5" и выберите "Run".

При выполнении проекта в среде IDE происходит сборка и развертывание приложения. В окне "Output" появится следующее сообщение:

result = This is EJB 3.0 Bean

Использование автономного клиента приложения для доступа к EJB

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

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

Доступ к одному удаленному интерфейсу

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

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

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

  1. В главном меню выберите "File > New Project".
  2. Выберите "EJB Module" в категории "Enterprise" и нажмите кнопку "Next".
  3. В качестве имени проекта введите EJBModule30 и выберите местоположение проекта.
  4. Снимите флажок "Use Dedicated Folder". Нажмите кнопку "Next".
  5. Убедитесь, что модуль EJB к приложению уровня предприятия не добавлен.
  6. Выберите сервер "GlassFish" и установите в поле "Java EE Version" версию "Java EE 5".
  7. Нажмите кнопку "Finish".

Создание сеансного компонента в модуле EJB

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

  1. Откройте мастер создания файла. Для этого щелкните правой кнопкой мыши модуль EJB в окне "Projects" и выберите "New > Other".
  2. Выберите "Session Bean" в категории "Enterprise" и нажмите кнопку "Next".
  3. В качестве имени EJB введите Bean30, в качестве пакета введите ejb, оставьте в типе сеанса "Session Type" значение "Stateless" и выберите "Remote" для создания удаленного интерфейса. Нажмите кнопку "Finish".

    После нажатия кнопки "Finish" класс компонента Bean30Bean.java открывается в редакторе исходного кода.

  4. В редакторе исходного кода щелкните правой кнопкой мыши в исходном коде и выберите в появившемся окне "EJB Methods > Add Business Method" для создания бизнес-метода для компонента. В диалоговом окне "Add Business Method" введите в качестве имени метода getResult, установите в поле "Return Type" значение "String" и проверьте, что выбран тип интерфейса "Remote". Нажмите кнопку "OK".
  5. В Bean30Bean.java измените возврат метода getResult на следующий код (выделен полужирным шрифтом):
    public String getResult() {
        return "This is EJB 3.0 Bean";
    }
  6. Для изменения имени по умолчанию, используемого для отображения пути компонента от Bean30Bean к Bean30, измените аннотацию сеансного компонента @Stateless. Затем для поиска компонента используйте Bean30 в клиенте приложения. Аннотация после этого должна выглядеть следующим образом (изменения выделены полужирным шрифтом):
    @Stateless(mappedName="Bean30")
    public class Bean30Bean implements Bean30Remote {
  7. Сохраните изменения.

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

Теперь потребуется создать клиент приложения "ApplicationClientForTest", который будет обращаться к EJB.

  1. В главном меню выберите "File > New Project".
  2. Выберите "Enterprise Application Client" в категории "Enterprise" и нажмите кнопку "Next".
  3. В качестве имени проекта введите ApplicationClientForTest и укажите местоположение.
  4. Снимите флажок "Use Dedicated Folder". Нажмите кнопку "Next".
  5. Выберите сервер "GlassFish" и установите в поле "Java EE Version" версию "Java EE 5".
  6. Нажмите кнопку "Finish".

Вызов EJB из клиента приложения

Теперь добавьте в качестве библиотеки к "ApplicationClientForTest" проект "EJBModule30" и код для доступа к Bean30.

  1. В окне "Projects" разверните узел проекта "ApplicationClientForTest", щелкните правой кнопкой мыши узел "Libraries" и выберите "Add Project".
    В качестве альтернативы можно открыть окно свойств проекта "ApplicationClientForTest" и выбрать "Add Project" в категории "Libraries".
  2. В диалоговом окне "Add Project" определите местоположение и выберите проект "EJBModule30", затем нажмите кнопку "Add Project JAR Files".

    Для "ApplicationClientForTest" к библиотеке добавляется архив JAR для "EJBModule30". В окне "Projects" можно развернуть узел "Libraries" для проекта и просмотреть библиотеки проекта.

  3. Дважды щелкните Main.java в окне "Projects" для открытия файла в редакторе исходного кода.
  4. В редакторе исходного кода добавьте следующий код к методу main файла Main.java. Для отображения сообщения в окне "Output" снова необходимо будет использовать System.err.println.
    public static void main(String[] args) {
        InitialContext ctx = new InitialContext();
        Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30");
        System.err.println("EJB message is:" + br.getResult());
  5. Исправьте операторы импорта (Ctrl-Shift-I).
  6. Исправьте любые ошибки в коде. Для справки можно использовать функцию предложения вариантов исправления в среде IDE.

    Примечание: В этом случае ошибка вызвана отсутствующим выражением throws. Для использования функции предложения вариантов исправления среды IDE поместите курсор вставки на первую строку кода, содержащую ошибку и подчеркнутую красным. Когда в левом поле появится лампочка с предложением, щелкните ее и выберите "Add throws clause..." для добавления к методу выражения throws. При добавлении к методу выражения throws в среде IDE будут добавлены соответствующие операторы импорта.

    Использование функции предложения вариантов исправления среды IDE для исправления ошибок
  7. Сохраните изменения.

Теперь, когда все исправлено, щелчком правой кнопки мыши узла проекта для каждого из проектов в окне "Projects" и выбором "Undeploy" и "Deploy" можно развернуть на сервере "EJBModule30" и "ApplicationClientForTest". Развернув оба проекта, щелкните правой кнопкой мыши "ApplicationClientForTest" в окне "Projects" и выберите "Run" для выполнения клиента приложения. В окне "Output" должно отображаться следующее:
EJB message is: This is EJB 3.0 Bean

Примечание: Возможно, для получения клиентом приложения доступа к EJB потребуется отключить используемый брандмауэр.

Доступ к двум или более удаленным интерфейсам

В этом упражнении будет создан второй удаленный интерфейс в "EJBModule30". Затем для получения доступа к каждому интерфейсу потребуется изменить код в клиенте приложения. Код, используемый в этом упражнении для вызова EJB, немного отличается от кода для вызова одного удаленного интерфейса. Это упражнение послужит справочным материалом в случае, если потребуется доступ к двум или более удаленным интерфейсам из одного автономного клиента приложения.

Создание второго удаленного интерфейса для "Bean30 EJB"

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

Для создания второго интерфейса необходимо выполнить следующие действия:

  1. Щелкните правой кнопкой мыши "EJB module" в окне "Projects" и выберите "New > Java class".
  2. Введите имя нового класса Bean30Remote2, затем введите ejb в поле "Package" и нажмите кнопку "Finish".

    После нажатия кнопки "Finish" класс компонента Bean30Remote2.java открывается в редакторе исходного кода.

  3. Для объявления класса удаленным интерфейсом добавьте к нему аннотацию @Remote.
  4. Измените определение класса для объявления класса интерфейсом и добавьте метод getResult. После этого класс должен выглядеть следующим образом (изменения выделены полужирным шрифтом):
    @Remote
    public interface Bean30Remote2 {
        String getResult2();
    }
  5. Исправьте операторы импорта. Необходимо будет импортировать javax.ejb.Remote.
  6. Сохраните изменения.

Изменение компонента "Bean30" для реализации интерфейса

В этом упражнении потребуется изменить "Bean30" для реализации интерфейса "Bean30Remote2".

  1. Реализуйте в Bean30Bean.java метод getResult2 из Bean30Remote2.java. Метод должен выглядеть следующим образом:
    public String getResult2() {
        return "This is EJB 3.0 Bean 2";
    }
  2. Для реализации Bean30Remote2 измените определение класса.

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

Код Bean30Bean.java

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

Дерево модуля "EJB30Module"

Изменение клиента "ApplicationClientForTest"

На этот раз потребуется изменить код поиска в классе клиента приложения Main.

  1. В окне "Projects" дважды щелкните класс main.java, принадлежащий "ApplicationClientForTest", для открытия класса в редакторе исходного кода.
  2. Для выбора второго интерфейса измените код в методе main. Если существует несколько удаленных интерфейсов, в поиске придется использовать полное имя для каждого из интерфейсов.
    public static void main(String[] args) throws NamingException {
        InitialContext ctx = new InitialContext();
        Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30#ejb.Bean30Remote");
        System.err.println("EJB message is:" + br.getResult());
        Bean30Remote2 br2 = (Bean30Remote2) ctx.lookup("Bean30#ejb.Bean30Remote2");
        System.err.println("EJB message 2 is:" + br2.getResult2());
  3. Исправьте параметры импорта для добавления оператора импорта для ejb.Bean30Remote2.
  4. Сохраните изменения.

Теперь повторно разверните "EJBModule30" и выполните клиент приложения. В окне "Output" должны отображаться следующие результаты:
EJB message is: This is EJB 3.0 Bean
EJB message 2 is: This is EJB 3.0 Bean 2

Заключение

В этом упражнении были продемонстрированы способы использования клиента приложения для доступа к Enterprise JavaBeans EJB 3.0. Был рассмотрен способ обращения к EJB из приложения, находившегося в приложении уровня предприятия, а также из автономного клиента приложения. Кроме того, было показано различие между вызовом компонента с единственным удаленным интерфейсом и компонента с несколькими удаленными интерфейсами.

Использование автономного клиента приложения для доступа к EJB (EJB 2.1)

Работа с компонентами EJB 2.X выполняется аналогичным образом, но с некоторыми отличиями. Это упражнение демонстрирует отличия в организации доступа к компонентам EJB 2.x от доступа к компонентам EJB 3.0.

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

Во-первых, необходимо создать модуль EJB.

  1. В главном меню выберите "File > New Project".
  2. Выберите "EJB Module" в категории "Enterprise" и нажмите кнопку "Next".
  3. Введите EJBModule14 в качестве имени проекта и определите местоположение проекта.
  4. Снимите флажок "Use Dedicated Folder". Нажмите кнопку "Next".
  5. Убедитесь, что модуль EJB к приложению уровня предприятия не добавлен.
  6. Выберите сервер "GlassFish" и установите в поле "Java EE Version" версию "J2EE 1.4".
  7. Нажмите кнопку "Finish".

Создание сеансного компонента в "EJBModule14"

Теперь потребуется создать компонент EJB Bean14 в модуле EJB. Для создания Bean14 необходимо выполнить следующие действия:

  1. Откройте мастер создания файла. Для этого щелкните правой кнопкой мыши модуль EJB в окне "Projects" и выберите "New > Other".
  2. Выберите "Session Bean" в категории "Enterprise" и нажмите кнопку "Next".
  3. Введите Bean14 в качестве имени класса, ejb в качестве пакета, оставьте тип сеанса (Session Type) Stateless и выберите Remote для создания удаленного интерфейса. Нажмите кнопку "Finish".

    После нажатия кнопки "Finish" класс компонента Bean14Bean.java открывается в редакторе исходного кода.

  4. В редакторе исходного кода щелкните правой кнопкой мыши в исходном коде и выберите из контекстного меню "EJB Methods > Add Business Method" для открытия диалогового окна "Add Business Method".
  5. В диалоговом окне "Add Business Method" введите getResult в качестве имени бизнес-метода, установите тип возврата (Return Type) "String" и укажите тип интерфейса "Remote". Нажмите кнопку "OK".
  6. Измените метод getResult в Bean14Bean.java для получения метода возврата, имеющего доступ к компоненту из другого компонента:
    public String getResult() {
        return "This is EJB 1.4 Bean";
    }
  7. Сохраните изменения.

Вызов EJB из клиента приложения

Теперь следует добавить проект "EJBModule14" к "ApplicationClientForTest" в качестве библиотеки и код для доступа к "Bean14".

  1. В окне "Projects" разверните узел проекта "ApplicationClientForTest", щелкните правой кнопкой мыши узел "Libraries" и выберите "Add Project".
  2. В диалоговом окне "Add Project" определите местоположение и выберите проект "EJBModule14", затем нажмите кнопку "Add Project JAR Files".

    Для "ApplicationClientForTest" к библиотеке добавляется архив JAR для "EJBModule14". В окне "Projects" можно развернуть узел "Libraries" для проекта и просмотреть библиотеки проекта.

  3. Дважды щелкните Main.java в окне "Projects" для открытия файла в редакторе исходного кода.
  4. В редакторе исходного кода удалите или закомментируйте код, используемый для доступа к "EJBModule30", и добавьте следующий код (выделен полужирным шрифтом) к методу main файла Main.java:
    public static void main(String[] args) throws NamingException {
        InitialContext ctx = new InitialContext();
        Object remote = ctx.lookup("ejb/Bean14Bean");
        Bean14RemoteHome sbrh = (Bean14RemoteHome) PortableRemoteObject.narrow(remote, Bean14RemoteHome.class);
        Bean14Remote sbr = sbrh.create();
        System.err.println("EJB 1.4 result:" + sbr.getResult());
  5. Исправьте операторы импорта.
  6. Исправьте ошибки в исходном коде. Ошибки вызваны тем, что методу необходимо выражение throws из поиска для NamingException, CreateException и RemoteException. Для исправления ошибок можно использовать функцию предложения вариантов исправления в среде IDE.

Теперь, когда все ошибки исправлены, можно развернуть "EJBModule14" и "ApplicationClientForTest" на сервере (щелкните правой кнопкой мыши каждый проект и выберите "Undeploy and Deploy"), а затем щелкните правой кнопкой мыши "ApplicationClientForTest" и выберите "Run". При выполнении клиента в окне "Output" должно отображаться следующее:
EJB 1.4 result: This is EJB 1.4 Bean


Что дальше?

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

Дополнительная информация по использованию компонентов уровня предприятия EJB 3.0 содержится в Руководстве по Java EE 5.

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

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems