Техническая поддержка

Получить обновления



- Часто задаваемые вопросы

- E-mail поддержки: administrator@npcirs.ru
support@npcirs.ru


- Горячая линия: 8(800)100-40-90
8(495)501-22-25




Главная  >  Научные статьи  >  Применение платформы J2EE для разработки корпоративного приложения "Внешняя зона" в автоматизированных системах управления

Применение платформы J2EE для разработки корпоративного приложения "Внешняя зона" в автоматизированных системах управления специального назначения

Зверев А.Б. (Главный инженер ЗАО "НПЦ ИРС"),
Легков К.Е. (Научный сотрудник СевероКавказского филиала МТУСИ, к.т.н., constl@mail.ru)

В настоящий период развития инфокоммуникационных систем и сетей связи время всеми ведущими ИТ-компаниями проводятся исследования и разработки по внедрению новых моделей управления сложными информационными системами. Данные разработки реализовывают техническое и информационное обеспечение различного вида выполняемых специальных задач, во время которых все действующие объекты совместно используют информацию с помощью единых интерфейсов, стандартов и протоколов. Эффективность системы управления сил специального назначения на современном этапе недостаточно невысока и не соответствует стоящим перед ней задачам, так как построена по "стволовому" принципу и не обеспечивает ни техническую, ни информационную совместимость систем и средств управления. Таким образом, для сил специального назначения наиболее актуальной является задача внедрения современных автоматизированных систем управления для управления ИТ-инфраструктурой и ресурсами данных информационных систем. Одним из важных ключевых вопросов является вопрос выбора наиболее производительных, качественных и экономически выгодных платформ проектирования, в том числе и для корпоративных приложений. Для уменьшения стоимости и увеличения скорости проектирования и разработки корпоративного приложения платформа J2EE предлагает компонентный подход к проектированию, разработке, сборке и внедрению корпоративных приложений. Платформа J2EE предлагает модель многоуровневого распределенного приложения, возможность повторного использования компонентов, интегрированный обмен данными на основе XML, унифицированную модель безопасности и гибкое управление транзакциями.

В системах связи специального назначения подключение автоматизированных рабочих мест для управления ИТинфраструктурой и ресурсами всей инфокоммуникационной системы осуществляется через внешние зоны, созданные на платформе J2EE (рис. 1).

Схема.Подключение автоматизированных рабочих мест для управления ИТ-инфраструктурой.
Рисунок 1.
Место J2EE-технологии в инфокоммуникационной системе​​.

Данная платформа использует модель многоуровневого распределенного приложения. Логически приложение разделено на компоненты в соответствии с их функциональностью. Различные компоненты, составляющие J2EE-приложение, установлены на различных компьютерах в зависимости от их уровня в многоуровневой среде J2EE, которой данный компонент принадлежит. Основными частями J2EE-приложения являются:

Хотя J2EE-приложение состоит из трех или четырех уровней, многоуровневые J2EE-приложения обычно принято называть трехуровневыми, т.к. они расположены на трех различных системах: клиентский компьютер, сервер J2EE и сервер базы данных или обычный сервер. Трехуровневые приложения, работающие данным способом, расширяют стандартную архитектуру клиент-сервер, добавляя многопоточный сервер приложений между клиентской частью и сервером базы данных.

J2EE-приложения состоят из компонентов. J2EE-компонента представляет собой законченный функциональный программный модуль, встроенный в приложение J2EE с соответствующими классами и файлами и взаимодействующий с другими компонентами. J2EE-спецификация определяет следующие J2EE-компоненты: клиентские приложения и апплеты — это компоненты, работающие на клиентской машине; компоненты технологии Java-сервлет и JavaServer Pages (JSP) — это web-компоненты, работающие на сервере; корпоративные компоненты — это бизнес-компоненты, работающие на сервере. J2EE-компоненты пишутся на языке программирования Java и компилируются точно так же, как и любая другая Java-программа. Отличием между J2EE-компонентами и "стандартными" классами Java является то, что J2EE-компоненты собираются в J2EE-приложение, находящееся в строгом соответствии со спецификацией J2EE, развернутое для функционирования в соответствующем месте и управляемое сервером J2EE.

J2EE-клиентом может быть Web-клиент или клиент приложения.

Web-клиент состоит из двух частей: динамические web-страницы, написанные на языках разметки различного типа (HTML, XML и т.д.), генерируемые web-компонентами на web-уровне, и web-браузер, визуализирующий полученные от сервера страницы.

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

Web-страница, полученная от web-уровня, может включать в себя встроенный апплет — небольшое клиентское приложение, написанное на языке Java и выполняющееся на установленной в web-браузере виртуальной машине Java. Однако системы клиента могут потребовать Java-Plug-in и файл политики безопасности для того, чтобы апплет успешно выполнялся в web-браузере.

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

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

Клиенты приложения имеют непосредственный доступ к корпоративным компонентам, исполняющимся на бизнес-уровне. Тем не менее, клиент приложения J2EE может открыть HTTP соединение для коммуникации с сервлетом, работающим на web-уровне, если существуют такие требования к приложению.

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

Компоненты JavaBeans содержат переменные экземпляра и методы get и set для доступа к данным в переменных экземпляра. Компоненты JavaBeans, используемые таким образом, обычно просты по дизайну и реализации, но должны быть согласованы с правилами именования и дизайна, определенными в архитектуре компонентов JavaBeans.

Клиент связан с выполняющимся на J2EE-сервере бизнес-уровнем либо непосредственно, либо (как в случае с работающим в браузере клиентом) посредством JSP-страниц или сервлетов, работающих на Web-уровне (рис. 2).

Коммуникации сервера
Рисунок 2. Коммуникации сервера

J2EE web-компоненты могут быть либо сервлетами — классами языка Java, которые динамически управляют запросами и конструируют ответы, либо страницами JSP. JSP-страницы являются текстовыми документами, которые исполняются так же, как и сервлеты, но предлагают более естественный подход к созданию статического содержания.

Статические html-страницы и апплеты связываются с web-компонентами во время сборки приложения, но не считаются Web-компонентами по J2EEспецификации. Обслуживающие классы со стороны сервера также могут быть связаны с web-компонентами и, подобно html-страницам, не считаются web-компонентами.

Так же как и клиентский уровень, web-уровень, может включать в себя компонент JavaBeans для управления вводом пользователя и направления этого ввода в работающий на бизнес-уровне корпоративный компонент для обработки (рис. 3).

Web-уровень и J2EE-приложение
Рисунок 3. Web-уровень и J2EE-приложение

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

Бизнес- и EIS-уровень
Рисунок 4. Бизнес- и EIS-уровень.

Существует три типа корпоративных компонентов: сессионные компоненты, компоненты управления данными и управляемые сообщениями компоненты. Сессионные компоненты представляют кратковременное общение с клиентом. Когда клиент заканчивает работу, сессионный компонент и его данные исчезают. В противоположность им, компоненты управления данными представляют постоянные данные, хранимые в одной строке таблицы базы данных. Если клиент завершает работу или сервер выключается, встроенный сервис гарантирует, что данные такого компонента будут сохранены.

Управляемые сообщениями компоненты комбинируют особенности сессионного компонента и JMS (службы сообщений Java) приемника сообщений, позволяя бизнес-компоненту получать сообщения JMS асинхронно.

Уровень корпоративной информационной системы образует программное обеспечение информационной системы и включает в себя системы корпоративной инфраструктуры, такие как планирование ресурсов предприятия (ERP), управление транзакциями мейнфрейма, базы данных, и другие стандартные информационные системы. J2EE-компоненты могут нуждаться в доступе к корпоративным информационным системам для взаимодействия, например, с базами данных.

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

Контейнеры являются интерфейсом между компонентом и низкоуровневыми платформо-зависимыми функциональными возможностями, поддерживающими компонент. До того, как web-компонент, корпоративный компонент или компонент клиентского приложения может быть выполнен, он должен быть скомпонован в J2EE-приложение и размещен внутри своего контейнера.

Процесс компоновки включает в себя определение установок контейнера для каждого компонента в J2EE-приложении и для самого J2EE-приложения. Установки контейнера настраивают внутреннюю поддержку, обеспечиваемую J2EE-сервером, которая включает в себя такие сервисы как безопасность, управление транзакциями, JNDI-поиск и удаленную связь. Вот некоторые из основных положений:

Тот факт, что J2EE-архитектура обеспечивает конфигурируемые сервисы, означает, что компоненты в J2EE-приложении могут вести себя по-разному, в зависимости от места их размещения. Например, корпоративный компонент может иметь установки безопасности, дающие ему определенный уровень доступа к базе данных в одном рабочем окружении и другой уровень доступа — в другом.

Контейнер также управляет неконфигурируемыми сервисами, такими как время жизни корпоративного компонента и сервлета, ресурсный пул (объединение ресурсов) связи с БД, персистенция данных, доступ к API J2EE-платформы. Хотя сохраняемость данных является неконфигурируемым сервисом, J2EE-архитектура позволяет замещать сохраняемость, управляемую контейнером, при помощи включения соответствующего кода в реализацию корпоративного компонента в тех случаях, когда необходимо получить больший контроль, чем обеспечиваемый по умолчанию.

Процесс размещения устанавливает компоненты J2EE-приложения в J2EE-контейнеры (рис.5):

J2EE сервер Контейнер клиентского приложения, база данных
Рисунок 5. J2EE-сервер и контейнеры

J2EE-компоненты упаковываются раздельно и связываются в J2EE-приложение. Каждый компонент, его файлы, такие как GIF и HTML-файлы, или сервисные классы на сервере и дескриптор размещения компонуются в модуль и добавляются в J2EE-приложение. J2EE-приложение состоит из одного или нескольких модулей корпоративных компонентов, web-компонентов или компонентов клиентского приложения. Окончательное корпоративное решение может использовать одно J2EE-приложение или состоять из двух и более J2EE-приложений в зависимости от требований проекта.

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

J2EE-приложение со всеми своими модулями поставляется в файле корпоративного архива (EAR). EARфайл является стандартным Java-архивом (JAR) с расширением .ear.

Использование модулей и EAR-файлов делает возможной компоновку нескольких различных J2EE-приложений, используя некоторые из тех же самых компонентов. Никакое дополнительное кодирование не требуется; это вопрос компоновки различных J2EE-модулей в EAR-файлы.

Модули повторного использования дают возможность разделить процесс разработки и размещения приложения на отдельные составляющие, так что разные люди и компании могут выполнять различные части процесса.

Первые две фазы включают приобретение и инсталляцию J2EE-приложения и инструментов. Когда программное обеспечение приобретено и установлено, J2EE-компоненты могут быть разработаны поставщиками компонентов приложения, скомпонованы сборщиками приложения и размещены установщиками.

Реляционная база данных обеспечивает постоянное место хранения данных приложения. Для реализации J2EE не требуется поддержки определенного типа базы данных. Это означает, что базы данных, поддерживаемые различными J2EE-продуктами, могут быть разными.

Для запуска J2EE SDK необходимо наличие: Java 2 Platform, Standard Edition (J2SE) SDK, которая предоставляет основные API для создания J2EE-компонентов, основные инструменты разработки и виртуальную машину Java. J2EE SDK предоставляет API, используемые в J2EE-приложениях.

Корпоративный компонент представляет собой код с полями и методами, реализующий модули бизнес-логики. Корпоративный компонент можно представить в виде строительного блока, который может использоваться как самостоятельно, так и совместно с другими компонентами, для исполнения бизнес-логики на J2EE-сервере.

Существует три вида корпоративных компонентов: сессионные компоненты, компоненты управления данными, управляемые сообщениями компоненты. Корпоративные компоненты часто взаимодействуют с базами данных. Одним из преимуществ компонентов управления данными является отсутствие SQL-кода или использование JDBC API непосредственно для выполнения операций доступа к базе данных, так как EJB-контейнер сделает это сам. При необходимости, чтобы сессионный компонент имел доступ к базе данных, требуется использование JDBC API.

JDBC API позволяет вызывать SQL-команды из методов языка программирования Java. JDBC API используется также в корпоративных компонентах при изменении установленной по умолчанию персистенции, управляемой контейнером, или при обращении к базе данных из сессионного компонента. При персистенции, управляемой контейнером, операции доступа к базе данных обрабатываются контейнером, т.е. реализация корпоративного компонента не содержит кода JDBC или SQL-команд. Также, возможно использование JDBC API в сервлете или JSP-странице для прямого доступа к базе данных, минуя корпоративный компонент.

JDBC API состоит из двух частей: интерфейса прикладного уровня, используемого компонентами приложения для доступа к базе данных, и интерфейса поставщика сервиса, используемого для подключения JDBC-драйвера к J2EE-платформе.

Технология Java Servlet 2.3

Технология Java Servlet позволяет определить классы сервлетов. Класс сервлета расширяет возможности серверов, доступные хост-приложениям при использовании ими модели программирования "запрос — ответ". Хотя сервлеты могут отвечать на запросы любого типа, они обычно используются в приложениях, поддерживаемых Web-серверами.

Технология JavaServer Pages.

Технология JavaServer Pages позволяет встраивать фрагменты кода сервлета прямо в текстовые документы. JSP-страница представляет собой текстовый документ, который содержит два типа текста: статичные шаблонные данные, которые могут быть представлены в любом текстовом формате, таком как HTML, WML и XML, а также JSP-элементы, которые определяют способ построения динамичного содержимого страницы.

Java Message Service

JMS представляет собой стандарт обмена сообщениями, позволяющий компонентам J2EE-приложения создавать, посылать, принимать и читать сообщения. Он обеспечивает двустороннее, надежное, асинхронное распределенное соединение.

Java Naming and Directory Interface 1.2

JNDI обеспечивает функции имен и каталогов. Интерфейс предоставляет приложениям методы для стандартных операций с каталогами, таких как назначение атрибутов объектам и поиск объектов по их атрибутам. Используя JNDI, J2EE-приложение может сохранять и восстанавливать любые типы именованных Java-объектов.

Поскольку JNDI не зависит от какой бы то ни было специализированной реализации, приложения могут использовать JNDI для доступа к многочисленным сервисам имен и каталогов, включая такие сервисы, как LDAP, NDS, DNS и NIS. Это позволяет J2EE-приложениям сосуществовать с традиционными приложениями и системами.

Java Transaction API 1.0

Java Transaction API (JTA) обеспечивает стандартный интерфейс для разделенных транзакций. J2EE-архитектура обеспечивает автоматическую фиксацию транзакции по умолчанию для управления фиксацией и откатом транзакций. Автофиксация означает, что любые другие приложения, просматривающие данные, будут видеть обновленные данные после каждой операции чтения или записи в базу данных. Однако если приложение выполняет две отдельные операции доступа к базе данных, зависящие друг от друга, необходимо использовать JTA API для разграничения целостной транзакций, включающей обе операции, на начало, откат и фиксацию.

JavaMail API

Приложение J2EE использует JavaMail API для отправления e-mail сообщений. JavaMail API состоит из двух частей: интерфейса прикладного уровня, используемого компонентами приложения для отправления почты, и интерфейса поставщика сервиса. J2EE-платформа включает JavaMail вместе с поставщиком сервиса, что позволяет компонентам приложения отправлять Интернет-почту.

JavaBeans Activation Framework

JavaBeans Activation Framework (JAF) используется JavaMail. Он предоставляет стандартные сервисы для определения типа произвольных частей данных, инкапсулирует доступ к ним, разрешает операции над ними, и создает соответствующий JavaBeans-компонент для выполнения этих операций.

Java API for XML Processing

Java API for XML Processing (JAXP) поддерживает обработку xml-документов, используя DOM, SAX и XSLT. JAXP позволяет приложениям анализировать и преобразовывать xml-документы независимо от особенностей реализации xml-обработки.

J2EE Connector Architecture

J2EE Connector Architecture используется для создания адаптеров ресурсов, поддерживающих доступ к информационной системе предприятия. Эти адаптеры могут быть включены в любой J2EE-продукт. Адаптер ресурса — программный компонент, позволяющий компонентам J2EE-приложения иметь доступ и взаимодействовать с базовым менеджером ресурсов. Т.к. адаптер ресурса специфичен для своего менеджера ресурсов, обычно существуют различные адаптеры для каждого типа базы данных или информационной системы предприятия.

Java Authentication and Authorization Service 1.0

Java Authentication and Authorization Service (JAAS) предоставляет возможность приложению J2EE аутентифицировать и авторизовывать определенного пользователя или группу пользователей.

JAAS — Java-версия стандартной системы подключаемого модуля аутентификации PAM (Pluggable Authentication Module), которая расширяет архитектуру безопасности платформы Java 2 поддержкой пользовательской авторизации.

Инструмент размещения приложения

J2EE-реализация предоставляет инструмент размещения приложения (deploytool) для компоновки, проверки и размещения J2EE-приложений. Существует две версии: командная строка и GUI.

GUI-версия включает мастера для:

Кроме того, информация о конфигурации может быть установлена для каждого типа компонента или модуля на закладке "inspector".

Литература

  1. Прокис Дж. Цифровая связь. Пер с англ. // Под ред. Д. Д. Кловского. — М.: Радио и связь, 2000. — 241 с.
  2. Легков К.Е., Донченко М.А. Требования к показателям качества информационного обмена в сетях беспроводного широкополосного доступа.// Сборник трудов СКФ МТУСИ, 2009. Ростов-на-Дону: СКФ МТУСИ, 2009. — С. 59-64.
  3. Легков К.Е. Методы оценки качества информационного обмена в сетях беспроводного широкополосного доступа // Сборник трудов СКФ МТУСИ, 2009. Ростов-на-Дону: СКФ МТУСИ, 2009. С. 64-68.
  4. http://www.codenet.ru/webmast/java/j2ee (02.12.2012).