Рекомендация: Сборка модулей J2EE
В этом разделе рассматривается сборка модулей J2EE.
Взаимосвязи
Связанные элементы
Основное описание

Введение

Сборка модуля J2EE приводит к созданию следующих элементов реализации:

  • Архив J2EE (файлы WAR, EJB-JAR и JAR) и его
  • Файлы описания (файлы XML), описывающие содержимое архива и предполагаемый способ функционирования его компонентов в контейнере развертывания

Дополнительная информация о модулях J2EE приведен в разделе Указания для рабочего продукта: модуль J2EE.

Определение архива

На этом шаге провайдер компонентов приложения идентифицирует компоненты, подлежащие упаковке в модуль.

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

Определение файлов описания

Ключевой этап в сборке модуля J2EE - определение файла описания. Большая часть необходимой информации должна была быть собрана во время проектирования каждого компонента, поэтому определение файла описания в основном заключается в согласовании результатов проектирования. В средствах автоматизированного проектирования могут быть предусмотрены инструменты создания файла описания.

Каждый архив содержит стандартный файл описания J2EE; кроме того, он может содержать файлы описания, поставляемые конкретными вендорами. Стандартные файлы описания, ejb-jar.xml для EJB-JAR и web.xml для WAR, содержат разделы, которые необходимо заполнить при тестировании и прочих "нерабочих" типах развертывания, а также раздел, который будет подготовлен окончательным ассемблером приложений для рабочего развертывания.

Каждый файл описания содержит информацию, предназначенную для провайдеров компонентов приложения, а также ассемблеров приложения. Например, файл ejb-jar.xml включает три основных раздела (применительно к обсуждаемой теме): <enterprise-beans>...</enterprise-beans>, <relationships>...</relationships> и <assembly-descriptor>...</assembly-descriptor>. Провайдер компонентов приложения определяет свойства объектов EJB, например поля CMP, в разделе <enterprise-beans>...</enterprise-beans>. Провайдер компонентов приложения также определяет необязательные взаимосвязи между объектами EJB в разделе <relationships>...</relationships> . В разделе <assembly-descriptor>...</assembly-descriptor>  определяются транзакции, роли защиты, права доступа методов и т.п. Обычно этот раздел используется только ассемблером приложения. Ассемблер может изменить содержимое двух других разделов, но это встречается нечасто. Ситуация с архивами WAR аналогична. Дополнительная информация о сборке приложений приведена в разделе Указания: сборка приложений J2EE.

Если во время проектирования вы определили отображения между таблицами баз данных в модели данных и сущностными объектами EJB постоянного хранения, управляемого контейнером (CMP), то эти отображения должны быть отражены в директивах отображения в дескрипторах, поставляемых конкретными вендорами (директивы отображения не входят в стандартный дескриптор EJB). Дополнительная информация об отображении сущностных объектов EJB CMP в таблицы баз данных приведена в разделе Технология: проектирование сущностных объектов EJB.

Если несколько компонентов упаковываются в один и тот же архив (см. Этап: определение архива), то провайдер компонентов приложений должен интегрировать содержимое их файлов описания. Например, при объединении объектов EJB в один EJB-JAR провайдер компонентов приложения должен согласовать информацию в файлах описания, например роли защиты и перекрестные ссылки.

Проверка архива

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