Что такое Java EE?
Java Platform, Enterprise Edition (Java EE) – это платформа для создания приложений класса предприятия с использованием языка Java. Java EE добавляет свои библиотеки и системные сервисы к платформе Java SE для поддержки масштабирования, безопасности, интеграции и других направлений, необходимых для приложений уровня предприятия.
Новое в Java EE 6
Java EE 6 поддерживает концепцию профилей (profiles), т.е. конфигурирование платформы Java EE для проектирования приложений определенного класса. Такие профили включают набор технологий (а не все технологии Java EE), необходимых для создания приложений данного класса.
Существенно облегчено встраивание в платформу дополнительных технологий. Теперь это делается стандартным образом. Будучи установленными, такие технологии используются также просто, как и технологии, встроенные в Java EE.
Облегчена разработка приложений.
Приложение Java EE 6
Платформа Java EE 6 позволяет разрабатывать многозвенные приложения. Различные части таких приложений расположены на разных машинах.
В общем случае многозвенное приложение состоит из:
- звена клиента, расположенного на машине клиента;
- веб-звена, размещенного в Java EE сервере;
- бизнес-узла, размещенного в Java EE сервере;
- базы данных, расположенной, возможно, на отдельной машине:
Компоненты приложения Java EE
Приложение Java EE содержит компоненты. Компонентами приложения Java EE являются:
- приложения и апплеты на клиенте;
- сервлеты, JSP, JSF – это веб-компоненты;
- EJB компоненты – это бизнес-компоненты.
Клиенты Java EE
Клиенты Java EE – это веб-клиенты и Java-приложения.
Веб-клиенты часто называют «тонкими» клиентами. Это динамически формируемые веб-страницы, которые клиент видит через браузер. Формируются они в веб-слое сервера Java EE. Тонкий клиент обычно не обращается к базе данных и не обслуживает бизнес-логику. Тонкий клиеннт — это интерфейс, более сложные действия выполняются другими частями многозвенного приложения.
Клиентом может быть и Java-приложение. Если возможностей браузера не хватант для работы клиента, то можно использовать обычное Java-приложение. Оно может прямо обращаться к слою предприятия (к EJB) или напрямую обращаться к базе данных.
JavaBeans
Компоненты, построенные по технологии JavaBeans применяются и на клиенте, и на Java EE сервере. Они обрабатывают потоки данных от клиента к серверному слою и базам данных и потоки в обратном направлении.
Веб-компоненты
Веб-компоненты – это сервлеты, страницы JSP и JSF. Сервлеты – это Java-классы, которые обрабатывают запрос из браузера клиента и формируют ответ в виде, как правило, HTML страницы. Страницы JSP также принимают запрос и формиуют ответ как и сервлеты.
Бизнес-компоненты
Бизнес-компоненты обрабатывают логику приложения. Они получают запрос от веб-слоя, обрабатывают его и отправляют полученную информацию в базу данных, точнее в слой, который хранит информацию. И наоборот, бизнес-компоненты могут запрашивать информацию из базы данных, обрабатывать её и отправлять результат клиенту.
Информационный слой EIS
В информационном слое собраны ресурсы уровня предприятия: планирование ресурсов предприятия ERP, обработка транзакций, базы данных и другие.
Контейнеры Java EE
Контейнер обслуживает специфическую функциональность, которая позволяет писать веб-компоненты, бины, приложения без необходимости учёта этой функциональности, т.е. можно сосредоточиться только на бизнес-задачах. Клиентский компонент (веб-компонент, бин, приложение) должен быть оформлен как Java EE модуль и помещён в контейнер. Контейнер есть интерфейс между клиентскими компонентами и функциональностью на нижнем уровне.
Контейнеры
Java EE сервер содержит в себе и обеспечивает работу веб-контейнера и EJB-контейнера.
Веб-контейнер управляет работой веб-страниц, сервлетов и некоторых EJB-компонентов.
EJB-контейнер управляет работой EJB-компонентов.
Надо заметить, что клиент в форме Java-приложения тоже установлен и работает в контейнере, но этот контейнер вместе приложением работают на клиентской машине.
Апплеты работают в контейнере апплетов на клиентской машине.
На схеме показаны контейнеры Java EE:
Сборка и установка приложений Java EE
Приложения Java EE упаковываются стандартным образом и устанавливаются в соответствующие контейнеры, работающие под управлением сервера Java EE. Приложение Java EE состоит из функциональных элементов (сервлетов, бинов и т.д.) и, дополнительно, содержит описатель установки (deployment descriptor). Последний описывает содержание приложения.
После установки в контейнеры сервера Java EE приложение готово к работе.
Как упаковываются приложения?
Java EE приложения поставляются либо в виде jar-файлов, либо как веб-архивы (WAR), либо как Enterprise Archive (EAR). Все эти упаковки являются jar-файлами, но веб-архивы имеют расширение .war, а EAR-архивы имеют расширение .ear. То, что приложение состалено из модулей jar, war, ear, позволяет использовать какие-то из этих модулей повторно в других приложениях.
На картинке представлена структура приложения EAR:
Описатель установки (deployment descriptor) – это XML документ с расширением .xml, он описывает параметры установки приложения и его составных частей. Описатель является декларацией и может быть изменён без изменения исходных кодов приложения. Сервер Java EE использует информацию из описателя и действует соответственно.
Описатели установки представлены двумя типами: описатель типа Java EE (applicationName.xml) и описатель времени исполнения (sun-applicationName.xml).
Модуль Java EE
Модуль в Java EE состоит из компонентов одного контейнерного типа и, возможно, описателя установки компонента этого типа. Модуль Java EE может быть установлен автономно, а не только в составе приложения.
Имеется 4-е типа Java EE модулей:
- EJB-модули, содержащие производственные бины и дескрипторы установки. Расширение для них – .jar.
- Веб-модули, содежащие сервлеты, Java-классы, картинки, HTML-файлы и др., описатель установки. Расширение для веб-модулей — .war.
- Модуль приложения клиента. Он состоит из Java-классов и описателя установки. Этот модуль упаковывается в jar-архив с расширением .jar.
- Модуль ресурсов взаимодействия, в нём Java-интерфейсы, классы, библиотеки, документация, описатель установки. Всё это нужно для связи с производственным информационным слоем. Упаковывается в jar-файл с расширением .rar.
Sun GlassFish Enterprise Server v3
Sun GlassFish Enterprise Server v3 – это реализация платформы Java EE. Дополнительно данный сервер добавляет к платформе Java EE ряд инструментов для разработчиков.
Веб-приложения
Веб-компоненты – это динамические расширения веб-серверов. К веб-компонентам относятся сервлеты, веб-страницы, веб-сервисы, страницы JSP.
Как идёт взаимодействие клиетна и веб-приложения? Клиент направляет запрос веб-серверу. Веб-сервер преобразует запрос в объект HTTPServletRequest и направляет его веб-компоненту, который формирует ответ в виде HTTPServletResponse. Веб-сервер получает этот объект, преобразует его в HTTP-ответ и направляет клиенту:
Веб-компоненты работают, находясь в веб-контейнере. Веб-контейнер — это программа, которая обслуживает веб-компоненты.
Веб-приложение состоит из веб-компонентов, ресурсов, вспомогательных классов и библиотек.
Веб-модули
Веб-компоненты и статические веб-файлы называются веб-ресурсы.
Веб-модуль – это наименьшая единица веб-ресурсов, которая может быть установлена в контейнер и которая будет работать. Веб-приложение тоже считается веб-модулем.
Рассмотрим структуру веб-модуля. Директория верхнего уровня называется корнем документа. В корне хранятся веб-страницы, классы, архивы, статические ресурсы.В корне содержится поддиректория WEB-INF, в которой имеется описатель установки web.xml и др. Если веб-модуль состоит только из HTTP-страниц и статических файлов, то нет необходимости в web.xml файле.
Можно создавать поддиректории и в корневой папке, и в папке WEB-INF.
Веб-модуль может быть установлен в контейнер, не будучи упаковыванным, или будучи упакованным в jar-файл, который в данном случае называется веб-архив (WAR) и который имеет расширение .war.
Если размешать WAR-архив на сервере предприятия, то этот архив должен содержать и описатель установки времени выполнения. Такой xml-файл называется sun-web.xml и располагается в директории WEB-INF.