corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Создание приложения уровня предприятия с помощью Maven

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

В этом руководстве описывается создание приложения уровня предприятия, которое упаковывается в архивный файл EAR и развертывается на сервере приложений GlassFish v3. Приложение создается с использованием архетипа приложения Maven Enterprise в мастере создания проекта. В приложение входит проект EJB, содержащий устойчивый класс сущностей, компонент, управляемый сообщениями и фасад сеансого компонента для сущности. В приложение также входит веб-проект, содержащий два сервлета.

В документе используется среда IDE NetBeans версии 6.8.

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

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

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

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans 6.8, версия Java
Комплект для разработчика на языке Java (JDK) версия 6
Сервер Sun GlassFish Enterprise Server v3

Примечание. Для GlassFish v3 необходим пакет программ для разработки приложений на языке Java (JDK) 6.

Предпосылки

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

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

Перед изучением этого курса можно ознакомиться со следующей документацией:

Использование Maven в среде IDE

В среде IDE NetBeans реализована полная поддержка Maven. Разработка проекта, в котором используется платформа Maven, практически идентична случаю разработки с использованием Ant. Однако в случае Maven имеются некоторые отличия, касающиеся способа построения проектов и работы с зависимости. Советы, приведенные ниже, могут помочь избегнуть ряда проблем при первом создании приложения Maven.

Проверка параметров настройки Maven

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

  1. Откройте окно "Параметры" в среде IDE.
  2. Выберите категорию "Miscellaneous" в окне "Options" и перейдите на вкладку "Maven".
  3. Укажите папку установки "Maven" (требуется версия 2.0.9 или выше).
  4. Проверьте корректность адреса к локальному репозиторию Maven.
  5. Для закрытия окна "Параметры" нажмите кнопку "OK".

Если платформа Maven не установлена в системе, установщик можно загрузить с веб-сайта Maven.

Обновите репозитарии Maven

Локальные и удаленные репозитарии Maven используются для завершения кода, а также при построении проектов. Обновление индексов удаленных репозитариев Maven требуется для обеспечения немедленной доступности всех артефактов, которые могут потребоваться при разработке проекта. Частоту проверки наличия обновлений можно настроить на вкладке "Maven" в окне "Параметры" среды IDE. Для непосредственной проверки наличия обновлений и обзора локальных и удаленных репозитариев Maven используется обозреватель репозитариев Maven.

  1. Выберите пункт меню "Окно > Прочее > Обозреватель репозитариев Maven".
  2. Нажмите кнопку "Обновить индексы" ( кнопка "Обновить индексы") в верхней части окна обозревателя репозитариев Maven.

При нажатии кнопки "Обновить индексы" в среде IDE выполняется проверка и загрузка самого свежего индекса для каждого из настроенных удаленных репозитариев Maven. Индекс описывает текущее состояние артефактов, расположенных в репозитарии, и используется для предоставления ссылок на артефакты, доступных для использования в приложении. По умолчанию артефакты не загружаются из репозитария автоматически без явно обозначенной необходимости в них.

Примечание. Размер индексов достаточно велик, и их полное обновление может занять значительное время.

Для получения подробных сведений об использовании Maven в среде IDE NetBeans см. раздел Настройка Maven в руководстве Создание приложения Maven Swing с использованием Hibernate, а также Практические рекомендации по Apache Maven в среде IDE NetBeans.

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

Цель данного упражнения заключается в создании проекта приложения уровня предприятия с использованием архетипа приложения Maven Enterprise, входящего в комплект поставки среды IDE. Архетип приложения уровня предприятия также создает проект EJB и проект webapp.

В мастере создания проекта среды IDE предоставляется несколько архетипов Maven, позволяющих быстро создавать проекты NetBeans часто встречающихся типов, например, проекты приложений уровня предприятия (EAR), проекты веб-приложений (WAR), а также проекты модулей EJB (JAR). Мастер также позволяет создавать проекты из архетипов, полученных из зарегистрированных удаленных репозитариев.

  1. Выберите в главном меню "File" > "New Project" (Ctrl+Shift+N).
  2. Выберите проект приложения "Maven Enterprise" из категории "Maven". Нажмите кнопку "Далее".
    Тип проекта "Maven Enterprise" в мастере создания проекта
  3. Введите MavenEnterpriseApp в качестве имени проекта и укажите местоположение проекта.
  4. (Необязательно) Измените подробные данные артефакта.. Нажмите кнопку "Далее".
    Подробные данные проекта в мастере создания проекта
  5. Выберите версию Java EE 6.
  6. Установите флажки "Создать модуль EJB" и "Создать модуль веб-приложения". Нажмите кнопку "Готово".

При нажатии кнопки "Готово" из архетипа приложения Maven Enterprise создаются следующие проекты:

  • EJB. В проекте EJB обычно содержится исходный код бизнес-логики приложения. Проект EJB упаковывается в архив EJB JAR.
  • Веб-приложение. В проекте веб-приложения обычно содержится уровень представления приложения, например, страницы JSF и JSP и сервлеты. В проект веб-приложения может также входить исходный код с бизнес-логикой. Проект веб-приложения упаковывается в архив WAR.
  • Сборка. Проект сборки используется для сборки архива EAR из архивов EJB и WAR. Проект сборки не содержит исходных кодов.
  • Приложение уровня предприятия. Проект приложения уровня предприятия не содержи исходных кодов. В проекте приложения уровня предприятия содержится только файл POM (pom.xml) с подробными данными о модулях, входящих в приложение уровня предприятия.
Окно "Проекты", показаны созданные проекты

После создания проекта уровня предприятия проект сборки отмечается значком, поскольку некоторые зависимости недоступны. Разверните узел "Библиотеки" для проекта сборки MavenEnterpriseApp-ear JavaEE6 для просмотра требуемых проектом библиотек, которые отсутствуют или не входят в путь к классам.

Для просмотра неудовлетворенных зависимостей можно щелкнуть правой кнопкой мыши узел "зависимость, не связанная с classpath" окне "Проекты" и выбрать пункт меню "Развернуть зависимости".

Проект "Сборка" содержит зависимости файлов JAR и WAR, которые упаковываются и предоставляются для использования после компиляции проектов EJB и веб-приложения. Артефакты MavenEnterpriseApp-ejb и MavenEnterpriseApp-web входят в список зависимостей в POM для проекта сборки.

Написание кода проекта EJB

Проект EJB содержит бизнес-логику приложения. Для управление транзакциями в этом проекте используется контейнер GlassFish, использующий интерфейс Java Transaction API (JTA). В этом руководстве для класса сущности в модуле EJB будет создан класс сущностей, управляемый сообщениями компонент и фасад сеанса.

Укажите целевой сервер.

При разработке приложений Maven как правило не требуется указывать сервер приложений до момента построения приложения. Однако для пользования некоторыми функциями генерации кода в среде IDE в рамках данного конкретного руководства целевой сервер настраивается перед началом написания кода. Настройка сервера развертывания позволяет среде IDE распознать технологии, поддерживаемые сервером, и включить разнообразные функции в мастерах для генерации кода, оптимизированного для используемго сервера.

  1. Запустите сервер приложений GlassFish.
  2. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите "Свойства".
  3. Выберите в окне "Свойства" категорию "Выполнить".
  4. Выберите сервер "GlassFish V3". Нажмите кнопку "OK".

Указание GlassFish в качестве сервера развертывания перед началом написания кода позволяет включить возможность выбора JTA в мастере создания единицы сохранения состояния. Также можно указать необходимость использования источников данных, зарегистрированных на сервере.

Примечание. Если GlassFish v3 не указан, при создании единицы сохранения состояния используется тип транзакции по умолчанию RESOURCE-LOCAL. Файл persistence.xml придется изменить вручную и указать в нем JTA, если управление транзакциями требуется осуществлять с помощью контейнера. Также в мастере создания единицы сохранения состояния вместо зарегистрированного источника данных потребуется указать соединение с базой данных.

Создание единицы сохранения состояния

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

Для создания единицы сохранения состояния выполните следующие действия.

  1. Для открытия мастера создания файла щелкните правой кнопкой мыши узел проекта EJB и выберите пункт раскрывающегося меню "Создать > Прочее".
  2. Выберите "Единица сохранения состояния" в категории "Сохранение состояния". Нажмите кнопку "Далее".
  3. Выберите "EclipseLink" в качестве источника сохранения состояния в диалоговом окне мастера создания единицы сохранения состояния.
  4. Выберите источник данных (например, выберите jdbc/sample, если необходимо использовать JavaDB).

    Источник данных для jdbc/sample находится в составе пакета среды IDE при установке среды IDE и сервера приложений GlassFish. Однако можно указать другой источник данных, если это необходимо.

    Можно сохранить другие параметры по умолчанию (имя единицы сохранения состояния, источник сохранения состояния EclipseLink).

  5. Убедитесь в том, что установлен флажок "Использовать интерфейсы API Java Translaction", и что для стратегии создания таблиц установлено значение "Создать", т.е. таблицы на основе классов сущностей создаются при развертывании приложения. Нажмите кнопку "Готово".
Мастер создания единицы сохранения состояния

При нажатии кнопки "Готово" в среде IDE создается файл XML persistence.xml, который открывается в редакторе. В окне "Проекты" показано, что файл создан в каталоге Other Sources > src/main/resources > META-INF. В этом файле содержатся подробные данные о соединении с базой данных и об управлении транзакциями. На вкладке "XML" в редакторе в файле persistence.xml можно заметить следующие элементы.

<persistence-unit name="com.mycompany_MavenEnterpriseApp-ejb_ejb_1.0-SNAPSHOTPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/sample</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
</persistence-unit>
            

Нетрудно заметить, что в качестве типа транзакции указано значение JTA, и что приложением будет использоваться зарегистрированный источник данных jdbc/sample.

Создание класса сущностей

Это упражнение посвящено созданию класса сущности в проекте EJB для представления объектов, состояние которых сохраняется в базе данных. Для создания класса сущности NewsEntity выполните следующие действия.

  1. Щелкните правой кнопкой мыши модуль EJB в окне "Проекты" и выберите "Создать > Прочее" для открытия мастера создания файла.
  2. Выберите "Класс сущностей" в категории "Сохранение состояния". Нажмите кнопку "Далее".
  3. В поле "Имя класса" введите NewsEntity.
  4. Введите ejb в качестве имени пакета и оставьте для параметра "Тип первичного ключа" значение по умолчанию "Long". Нажмите кнопку "Готово".

При нажатии кнопки "Готово" класс сущности NewsEntity.java будет открыт в редакторе исходного кода. В редакторе исходного кода добавьте несколько полей путем выполнения следующих действий.

  1. Добавьте к классу следующие объявления полей.
    private String title;
    private String body;
  2. Правой кнопкой мыши щелкните в области редактора исходного кода и выберите команду "Вставить код", затем выберите из раскрывающегося меню "Методы получения и установки".
  3. В диалоговом окне "Создание методов получения и установки" выберите поля body and title. Нажмите кнопку "Создать".
  4. Исправьте операторы импорта и сохраните измененные данные.

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

В этом упражнении в проекте EJB будет создан компонент, управляемый сообщениями. Компонент, управляемый сообщениями, – это компонент EJB, реализующий асинхронный обмен сообщениями. Управляемый сообщениями компонент используется в приложении NewsApp для получения и обработки сообщений, передаваемых в очередь сервлетом в веб-модуле.

Для использования компонента, управляемого сообщениями, в приложении необходимо зарегистрировать на сервере ресурсы соединения, используемые компонентом. При развертывании на сервер GlassFish можно создать ресурсы непосредственно на сервере посредством консоли администратора либо создать эти ресурсы при развертывании путем указания подробных данных в файле sun-resources.xml file. При развертывании приложения на сервере ресурсы регистрируются на сервере на основании файла sun-resources.xml. При создании компонента, управляемого сообщениями, с помощью мастера создания файла в среде IDE автоматически генерируются элементы файла sun-resources.xml.

В проекте Maven файл sun-resources.xml располагается в каталоге src > main > setup в узле проекта в окне "Файлы".

  1. Щелкните правой кнопкой мыши модуль EJB в окне "Проекты" и выберите "Создать > Прочее" для открытия мастера создания файла.
  2. В категории "Java EE" выберите управляемый сообщениями компонент. Нажмите кнопку "Далее".
  3. В поле "Имя EJB" введите NewMessage.
  4. В раскрывающемся списке "Пакет" выберите ejb.
  5. Для открытия диалогового окна "Добавление адресата сообщения" нажмите кнопку "Добавить" рядом с полем "Адресат проекта".
  6. В диалоговом окне "Добавление адресата сообщения" введите jms/NewMessage и выберите "Очередь" для типа адресата. Нажмите кнопку "OK".
    Мастер создания единицы сохранения состояния
  7. Убедитесь в том, что адресат проекта настроен правильно. Нажмите кнопку "Готово".
    Мастер создания единицы сохранения состояния

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

    @MessageDriven(mappedName = "jms/NewMessage", activationConfig =  {
            @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
            @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
        })
    public class NewMessage implements MessageListener {
    
        public NewMessage() {
        }
    
        public void onMessage(Message message) {
        }
    }
  8. Введите в класс ресурс MessageDrivenContext посредством добавления к классу следующего аннотированного поля:
    public class NewMessageBean implements MessageListener {
    
    @Resource
    private MessageDrivenContext mdc;
    
  9. Введите в класс диспетчер объектов посредством добавления к классу следующего аннотированного поля (выделено полужирным шрифтом):
    public class NewMessage implements MessageListener {
    
    @Resource
    private MessageDrivenContext mdc;
    @PersistenceContext(unitName="com.mycompany_MavenEnterpriseApp-ejb_ejb_1.0-SNAPSHOTPU")
    private EntityManager em;
                       

    Аннотация @PersistenceContext указывает контекст путем объявления единицы сохранения состояния. Значение unitName представляет собой имя единицы сохранения состояния.

  10. Добавьте следующий метод save (выделен полужирным шрифтом).
    public NewMessage() {
    }
    
    public void onMessage(Message message) {
    }
    
    public void save(Object object) {
        em.persist(object);
    }
  11. Измените метод onMessage путем добавления следующих строк кода (выделены полужирным шрифтом) в тело метода:
    public void onMessage(Message message) {
         ObjectMessage msg = null;
         try {
              if (message instanceof ObjectMessage) {
              msg = (ObjectMessage) message;
                  NewsEntity e = (NewsEntity) msg.getObject();
                  save(e);
              }
         } catch (JMSException e) {
              e.printStackTrace();
              mdc.setRollbackOnly();
         } catch (Throwable te) {
              te.printStackTrace();
         }
    }
  12. Исправьте операторы импорта (Ctrl+Shift+I) и сохраните измененные данные.

    Примечание. При создании операторов импорта необходимо предусмотреть импорт библиотек jms и javax.annotation.Resource.

Подробные сведения об управляемых сообщениями компонентах см. в главе Что такое управляемый сообщениями компонент? в руководстве по Java EE 6. Часть I.

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

В этом упражнении будет использоваться мастер создания фасада сеанса для класса сущности NewsEntity. В этом мастере создается ряд общих методов создания, редактировани и поиска, к которым смогут осуществлять доступ сервлеты веб-приложения.

  1. Щелкните модуль EJB правой кнопкой мыши и выберите команду "Создать > Прочее".
  2. Из категории "Сохранение состояния" выберите "Сеансные компоненты для классов сущностей" и нажмите кнопку "Далее".
  3. Из списка доступных классов сущностей выберите ejb.NewsEntity и нажмите кнопку "Добавить", чтобы переместить класс на панель "Выбранные классы сущностей". Нажмите кнопку "Далее".
  4. Убедитесь в том, что для параметра "Пакет" установлено значение ejb. Создавать локальный интерфейс не требуется.
  5. Нажмите кнопку "Готово".
Мастер создания единицы сохранения состояния

В Java EE 6 интерфейсы использовать не обязательно. В Java EE 5 для сеансового компонента необходимо создать локальный интерфейс, и впоследствии вызывать этот сеансовый компонент через созданный интерфейс. В Java EE 6 локальный интерфейс не является обязательным, и доступ сервлета из веб-модуля к сеансовому компоненту возможен непосредственно через безынтерфейсовый фасад.

Написание кода веб-приложения

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

Создание сервлета ListNews

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

  1. Щелкните проект веб-модуля правой кнопкой мыши и выберите "Создать" > "Сервлет".
  2. В поле "Имя класса" введите ListNews.
  3. В качестве имени пакета введите web. Нажмите кнопку "Готово".

    При нажатии кнопки "Готово" класс ListNews.java будет открыт в редакторе исходного кода.

  4. Щелкните в области редактора исходного кода правой кнопкой мыши и выберите "Вставить код", затем выберите "Вызов компонента EJB".
  5. В диалоговом окне "Вызов компонента EJB" разверните узел NewsApp-ejb и выберите NewsEntityFacade. Нажмите кнопку "OK".
    Диалоговое окно "Вызов компонента EJB"

    При нажатии кнопки OK выполняется ввод ресурса EJB в сервлет с использованием аннотации @EJB.

    @WebServlet(name = "ListNews", urlPatterns = {"/ListNews"})
    public class ListNews extends HttpServlet {
        @EJB
        private NewsEntityFacade newsEntityFacade;
  6. Измените метод processRequest путем раскомментирования кода и добавления следующих строк кода (выделены полужирным шрифтом) в тело метода:
    out.println("<h1>Servlet ListNews at " + request.getContextPath () + "</h1>");
    
    List news = newsEntityFacade.findAll();
    for (Iterator it = news.iterator(); it.hasNext();) {
      NewsEntity elem = (NewsEntity) it.next();
      out.println(" <b>"+elem.getTitle()+" </b><br />");
      out.println(elem.getBody()+"<br /> ");
    }
    out.println("<a href='PostMessage'>Add new message</a>");
    
    out.println("</body>");
       
  7. Исправьте выражения импорта (Ctrl+Shift+I) и сохраните измененные данные.

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

Создание сервлета PostMessage

В этом упражнении будет создан сервлет PostMessage, используемый для отправки сообщений. Для добавления созданных ресурсов JMS непосредственно в сервлет используются аннотации с указанием имени переменной и имени, на которое она отображается. Затем необходимо написать код для отправки сообщения JMS и код для формы HTML, предназначенной для добавления сообщения.

  1. Щелкните проект веб-модуля правой кнопкой мыши и выберите "Создать" > "Сервлет".
  2. В поле "Имя класса" введите PostMessage.
  3. В качестве имени пакета выберите web. Нажмите кнопку "Готово".

    При нажатии кнопки "Готово" в редакторе исходного кода будет открыт класс PostMessage.java.

  4. Используйте аннотации в редакторе исходного кода для ввода ресурсов ConnectionFactory и Queue путем добавления следующих объявлений полей.
    @WebServlet(name="PostMessage", urlPatterns={"/PostMessage"})
    public class PostMessage extends HttpServlet {
       @Resource(mappedName="jms/NewMessageFactory")
       private  ConnectionFactory connectionFactory;
    
       @Resource(mappedName="jms/NewMessage")
       private  Queue queue;
  5. Исправьте операторы импорта для (Ctrl+Shift+I) импорта библиотек javax.jms.
    Мастер создания единицы сохранения состояния

    Примечание. Если в среде IDE не предлагается вариант выбора javax.jms, можно выполнить поиск правильного артефакта в репозитариях, щелкнув значок предложения на поле рядом со строкой private ConnectionFactory connectionFactory; и выбрав "Поиск зависимости в репозитариях Maven".

    Мастер создания единицы сохранения состояния

    Диалоговое окно "Поиск в репозитариях Maven" можно использовать для поиска и выбора артефакта, содержащего ConnectionFactory.

    Мастер создания единицы сохранения состояния
  6. Добавьте следующие строки, используемые для отправки сообщений JMS, к методу processRequest.
    response.setContentType("text/html;charset=UTF-8");
    
    // Добавьте следующий код для отправки сообщения JMS
    String title=request.getParameter("title");
    String body=request.getParameter("body");
    if ((title!=null) && (body!=null)) {
        try {
            Connection connection = connectionFactory.createConnection();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer messageProducer = session.createProducer(queue);
    
            ObjectMessage message = session.createObjectMessage();
            // здесь создается сущность NewsEntity, отправляемая в сообщении JMS
            NewsEntity e = new NewsEntity();
            e.setTitle(title);
            e.setBody(body);
    
            message.setObject(e);
            messageProducer.send(message);
            messageProducer.close();
            connection.close();
            response.sendRedirect("ListNews");
    
        } catch (JMSException ex) {
            ex.printStackTrace();
        }
    }
  7. Раскомментируйте код для вывода HTML и создайте веб-форму для добавления сообщения.
    out.println("Servlet PostMessage at " + request.getContextPath() + "</h1>");
    
    // Следующий код служит для размещения формы на веб-странице
    out.println("<form>");
    out.println("Title: <input type='text' name='title'><br/>");
    out.println("Message: <textarea name='body'></textarea><br/>");
    out.println("<input type='submit'><br/>");
    out.println("</form>");
    
    out.println("</body>");
        
  8. Исправьте выражения импорта (Ctrl+Shift+I) и сохраните измененные данные.

    Примечание. Может потребоваться импорт библиотек javax.jms для Connection, ConnectionFactory, Session и Queue.

Построение приложения с помощью Maven

Написание кода завершено, и можно выполнить построение приложения уровня предприятия с помощью Maven. Этот раздел посвящен построению и упаковке проектов в архив EAR. В архив EAR входят архив EJB JAR и архив WAR. После создания архива EAR его можно развернуть на целевом сервере.

Работа с зависимостями проекта

В этом упражнении выполняется изменение файла pom.xml проекта веб-приложения в целях предотвращения включения архива EJB в архив WAR в ходе упаковки. Это требуется для недопущения включения двух копий архива EJB в архив EAR.

В каждоый проект Maven входит файл pom.xml, содержащий подробные данные о содержимом архивов. Любые внешние библиотеки, требуемые проектом, входят в список зависимостей в файле pom.xml. Файл pom.xml можно изменить и указать в нем зависимости, которые должны быть включены в упакованный архив.

В этом приложении в архив EAR упаковываются архивы EJB JAR и WAR. Обратите внимание на файл pom.xml в проекте сборки: архивы EJB и WAR объявлены как зависимости.

Файл pom.xml проекта сборки

Обратите внимание на файл pom.xml в проекте веб-приложения: архив EJB объявлен как зависимость. Архив EJB требуется проектом веб-приложения как зависимость, однако для этого приложения не требуется включать архив EJB в WAR при упаковке. Архив EJB предоставляется для использования в веб-приложении в составе архива EAR.

Файл pom.xml проекта сборки

Для просмотра визуального представления зависимостей проекта можно щелкнуть правой кнопкой мыши файл pom.xml и выбрать "Показать график зависимостей". Наведите указатель мыши на артефакт для отображения всплывающей подсказки с подробными данными артефакта.

Автозавершение кода в файле pom.xml

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

  1. Разверните узел "Файлы проекта" в проекте веб-приложения.
  2. Дважды щелкните pom.xml для открытия файла в редакторе.
  3. Измените зависимость в артефакте MavenEnterpriseApp-ejb путем изменения файла POM и добавления следующего элемента <scope>provided</scope>.
    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>MavenEnterpriseApp-ejb</artifactId>
        <scope>provided</scope>
        <version>1.0-SNAPSHOT</version>
    </dependency>
  4. Сохраните изменения.

Можно использовать автозавершение кода в редакторе POM, упрощающее правку файла.

Автозавершение кода в файле pom.xml

Если в файле POM содержится объявление предоставленной зависимости, этот артефакт не упаковывается Maven при построении архива WAR.

Построение проекта с зависимостями

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

Можно настроить привязку целей к операциям в меню "Действия" в диалоговом окне "Свойства" проекта.

Для построения архива EAR выполните следующее действие.

  • Щелкните правой кнопкой мыши узел проекта сборки и выберите команду "Построить вместе с зависимостями".

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

Окно вывода, показан порядок построения Reactor

Результаты построения также отображаются в окне "Вывод".

Окно вывода, показан статус построения Reactor

После построения проекта сборки итоговый архив EAR отображается в каталоге target в узле проекта "Сборка" в окне "Файлы".

Окно "Файлы", показан архив EAR

Если использовано имя артефакта по умолчанию com.mycompany, для просмотра артефактов построения в обозревателе репозитариев Maven можно развернуть узел com.mycompany в локальном репозитарии.

Для получения подробных сведений о построении проектов Maven см. Maven - Введение в жизненный цикл построения по адресу maven.apache.org.

Развертывание архива EAR

В этом разделе описываются два метода развертывания архива EAR на сервере. Приложение можно развернуть на сервере GlassFish с помощью действия меню в среде IDE или с помощью средства развертывания в консоли администратора GlassFish.

Развертывание из среды IDE

В этом упражнении выполняется изменение целевого элемента Maven, отображаемого на действие "Выполнить". После изменения действия действием "Выполнить" можно будет пользоваться для развертывания архива EAR на сервере.

  1. Щелкните правой кнопкой мыши узел проекта "Сборка" в окне "Проекты" и выберите "Свойства".
  2. Выберите пункт "Действия" в списке "Категории" на левой панели окна "Свойства".
  3. Выберите действие "Выполнить проект" из списка на правой панели.
  4. В поле "Цели выполнения" удалите цель package и введите install. Нажмите кнопку "OK".
    Панель "Действия" диалогового окна "Свойства" для проекта
  5. Щелкните правой кнопкой мыши узел проекта "Сборка" в окне "Проекты" и выберите "Выполнить".
  6. Выберите сервер GlassFish в диалоговом окне "Выберите сервер развертывания". Нажмите кнопку "OK".
    Диалоговое окно "Выберите сервер развертывания"

После выбора сервера развертывания в среде IDE создаются ресурсы JMS на сервере, после чего выполняется развертывание архива EAR.

Развертывание из консоли администратора GlassFish

В этом упражнении выполняется развертывание архива EAR с помощью средства "Развернуть" в консоли администратора Glassfish.

  1. Разверните узел "Серверы" в окне "Службы".
  2. Запустите сервер приложений GlassFish.
  3. Щелкните правой кнопкой мыши узел сервера приложений GlassFish и выберите "Просмотр консоли администратора" для открытия в обозревателе консоли администратора GlassFish.
  4. Щелкните узел "Приложения" на левой панели консоли администратора.
  5. Нажмите кнопку "Развернуть" на главной панели консоли администратора.
  6. Нажмите кнопку "Обзор" для поиска архива EAR приложения уровня предприятия.

    Архив EAR расположен в каталоге target внутри каталога приложения уровня предприятия в локальной системе.

  7. Нажмите кнопку "OK".

При нажатии кнопки "ОК" выполняется развертывание приложения с помощью средства развертывания GlassFish.

Примечание. Если развертывание приложения выполняется с помощью средства развертывания, потребуется также вручную создать ресурсы, требуемые приложением (если они еще не созданы).

Выполнение приложения

В этом упражнении выполняется открытие страницы ListNews приложения в обозревателе и добавление сообщения.

  1. Для вывода страницы ListNews откройте в обозревателе следующий адрес URL.

    http://localhost:8080/MavenEnterpriseApp-web/ListNews.

    При первом выполнении проекта база данных пуста, и сообщения для вывода отсутствуют.

    Страница ListNews, открытая в обозревателе
  2. Нажмите кнопку "Добавить сообщение".
  3. Введите сообщение в форму в сервлете PostMessage. Нажмите кнопку "Отправить запрос".
    Страница ListNews, открытая в обозревателе

При добавлении сообщения с помощью сервлета PostMessage оно передается на постоянное хранение в управляемый сообщениями компонент. Для просмотра сообщений в базе данных вызывается сервлет ListNews. Список сообщений в базе данных, извлеченных сервлетом ListNews, часто выводится без нового сообщения, поскольку служба передачи сообщений работает асинхронно.

Загрузка проекта решения

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

  • Загрузите архив завершенного проекта в формате zip.
  • Выполните проверку исходных файлов проекта на выходе из Kenai, выполнив перечисленные ниже действия.
    1. Выберите в главном меню команды "Team" > "Kenai" > "Get Sources from Kenai".
    2. Укажите местоположение хранилища Kenai в диалоговом окне "Get Sources from Kenai", нажав кнопку "Browse" для открытия диалогового окна "Browse Kenai Projects".
    3. Найдите элемент NetBeans IDE Samples Catalog.
    4. Выберите "NetBeans IDE Samples Catalog" и нажмите кнопку "OK".
    5. Нажмите кнопку "Обзор" для определения папки назначения и выберите Samples/JavaEE/MavenEnterpriseApp. Нажмите кнопку "OK".
    6. Укажите локальную папку для исходных файлов (папка должна быть пустой).
    7. Нажмите кнопку "Get From Kenai".

      После нажатия кнопки "Get From Kenai" среда IDE инициализирует локальную папку в качестве хранилища "Subversion" и выполняет проверку исходных файлов проекта на выходе.

    8. Щелкните команду "Open Project" в диалоговом окне, которое появится после завершения проверки.

    Примечания.

    • Процедура получения исходных файлов для редактирования из Kenai относится только к среде NetBeans IDE 6.7 и 6.8.
    • Для получения исходных файлов на редактирование из Kenai требуется клиент Subversion. Дополнительные сведения об установке Subversion см. в разделе Настройка Subversion Руководства по Subversion в среде IDE NetBeans.


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

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

Дополнительные сведения по использованию компонентов уровня предприятия см. в руководстве по Java EE 6.

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