За последний год серверы приложений предоставили инфраструктуру для построения нового поколения Web-приложений [7]. Серверы приложений облегчают жизнь разработчикам, автоматизируя низкоуровневое взаимодействие и предполагая масштабируемость, фокусируя внимание разработчиков на бизнес-логике создаваемого решения, а не на проблемах системного уровня. При этом вопрос интеграции приложений предприятия (EAI — enterprise application integration) решается серверами приложений единообразно, а не через преодоление частных проблем, специфичных для каждого нового источника данных или информации. Один из наиболее авторитетных экспертов в области интеграции приложений, Дэвид Линтикум, обозреватель журналов DBMS и EAI Journal, так говорит о серверах приложений: «Во многих сценариях EAI предприятия хотят интегрировать приложения посредством доступа из Web-браузера, предоставляя общий интерфейс для различных приложений и источников данных. Этот подход также известен как создание порталов... Серверы приложений предоставляют одно из лучших решений для решения этой задачи» [4].

Интеграция Application Server Deployment Descriptor Editor (DDE) и JBuilder 4

IDC в обзоре, посвященном серверам приложений [1], перечисляет их основные задачи: выполнение бизнес-логики; доступ к информации; интеграция приложений.

Минимальный набор служб, с точки зрения IDC:

  • поддержка распределенной компонентно-ориентированной архитектуры;
  • поддержка транзакций;
  • единый, четко специфицированный интерфейс для разработчика;
  • поддержка баланса загрузки на этапе выполнения бизнес-логики;
  • долговременное хранение данных (data persistence).

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

Большинство аналитиков сходятся во мнении, что современные серверы приложений должны реализовывать платформу Java 2 Enterprise Edition (J2EE). «Отслеживая на протяжении более чем двух лет тенденции на рынке серверов приложений, мы должны отметить, что этот рынок эволюционирует от частных решений к подходам, базирующимся на стандартах, в частности, касающихся компонентной модели, — пишет Майк Гилпин, вице-президент Giga Information Group [6]. — Мы уверены, что компонентная модель Enterprise JavaBeans и ассоциированные стандарты Java 2 Enterprise Edition будут доминировать на рынке серверов приложений и обеспечивать вероятный рост рынка почти 180% в год». Показателен выбор J2EE и, в частности, EJB в качестве базовой платформы для создания нового поколения операционной платформы оборонных программных систем США (Defense Information Infrastructure Common Operating Environment). Enterprise JavaBeans является рекомендованной компонентной платформой для доступа к данным и реализации бизнес-логики в многозвенных Java-приложениях COE [3].

Технологическая основа Borland Application Server

Borland положила в основу Application Server 4 идею максимальной открытости, заключающейся в принципиальном следовании стандартам. Borland Application Server (BAS) занимает центральное место в стратегии компании и служит основой для построения масштабируемых решений (рис. 1).

Технологии, продукты и службы Borland

Существует два базовых комплекса стандартов, не зависящих от платформы и операционного окружения: CORBA и J2EE компании Sun Microsystems. CORBA на сегодняшний день — наиболее проработанное промежуточное ПО с точки зрения реализованных проектов в различных отраслях во всем мире. Решающее преимущество архитектуры CORBA — абстракция распределенных вычислений, скрывающая особенности сетевого окружения от прикладных программ [5]. Элементы CORBA являются не только стандартами консорциума OMG, но и других ведущих организаций, ответственных за принятие и развития стандартов, например, ISO [10].

Платформа J2EE как комплекс спецификаций и архитектурных решений стала фактически стандартом для реализации бизнес-логики и интеграции данных в крупномасштабных компонентных системах. При этом CORBA и J2EE дополняют друг друга. Опубликованный Sun еще в момент разработки спецификации EJB документ Enterprise JavaBeans Frequently Asked Questions так характеризует взаимное отношение CORBA и EJB: «Является ли технология EJB конкурентом CORBA? Нет. Фактически, EJB и CORBA комплиментарны. CORBA предоставляет инфраструктуру, базирующуюся на стандартах, на основе которой строятся EJB-серверы. Кроме того, недавно выпущенная предварительная спецификация компонентной модели CORBA ссылается на EJB, как на архитектуру для построения CORBA-компонентов на Java. Элементы CORBA и EJB скорее всего сольются в ближайший год» [8]. Действительно, спецификация CORBA Component Model (CCM), предварительная версия которой опубликована OMG [9], рассматривает модель EJB как основу для развития компонентного подхода и для других языков программирования. Интеграция CORBA и Internet-технологий позволяет разработчикам использовать существующую инфраструктуру Сети для построения эффективных распределенных приложений. Интеграция CORBA и Java облегчает использование сетевых возможностей платформы Java для интеграции унаследованных и вновь создаваемых систем [2].

Функциональные возможности Application Server

Самая элегантная компонентная модель была бы бесполезна без продуктов, ее поддерживающих [11]. Borland Application Server — это реализация платформы J2EE на основе связки CORBA — VisiBroker.

Подобный подход не случаен. Borland VisiBroker for Java and C++ в качестве реализации CORBA активно используется в решениях Oracle, Cisco, HP, Business Objects, TIBCO, Ericsson, Nokia и других компаний. Borland Application Server 4.1 предоставляет разработчику набор служб, важнейшими из которых являются:

  • CORBA ORB (Object Request Broker) — VisiBroker;
  • контейнер EJB;
  • служба Web (контейнер для сервлетов, JSP, файлов HTML и т.д.);
  • служба именования — VisiNaming (COSnaming/JNDI);
  • агентская система для службы именования (OSAgent);
  • служба долговременного хранения (JDataStore),.
  • служба транзакций VisiTransact (COStransaction/JTS&JTA);
  • служба обмена сообщениями VisiMessage (JMS — Java Messaging Service);
  • служба безопасности Security Service for Application Server.

В качестве компонентной модели Application Server использует Enterprise JavaBeans (EJB). Модель EJB была изначально спроектирована для максимального отделения прикладной функциональности от системного кода, связанного с инициализацией и подключением к объектной инфраструктуре, часто называемой объектной шиной (The Object Bus). Соответственно, Application Server реализует контейнер, берущий на себя функции поддержки жизненного цикла компонентов EJB, координацию взаимодействия с транзакционной службой, службой безопасности и т.п. Разработчик создает компоненты EJB и помещает их в контейнер Application Server, который, в свою очередь, предоставляет бизнес-службы этих компонентов потребителям соответствующего информационного ресурса, «подключая» эти компоненты к объектной шине CORBA IIOP (Internet Inter-ORB Protocol) так, как если бы те были обычными CORBA-объектами. По сути дела, Application Server — это своеобразный «двуликий Янус», предоставляющий доступ к службам CORBA как к службам J2EE и к элементам J2EE как к объектам CORBA. Этот подход реализован на основе «публикации» служб и компонентов в службах именования CORBA COSnaming и J2EE JNDI, которые физически представлены единым программным кодом (рис. 3).

Консоль Application Server для управления распределенными сервисами и компонентами

Взаимодействие объектов в крупных информационных системах невозможно представить без использования транзакционных механизмов. При этом объектами транзакций являются не только сущности базы данных, но и объекты бизнес-логики. Для поддержки развитого транзакционного взаимодействия Borland Application Server включает как одна из служб VisiTransact — единую реализацию службы CORBA COStransaction и J2EE JTS/JTA (Java Transaction Service/Java Transaction API).

EJB-контейнер построен на базе Visibroker, который для достижения максимальной масштабируемости приложений использует мультиплексирование соединений с клиентами, создание и управление пулом соединений, поддержку пула потоков (thread). Взаимодействия между клиентами и компонентами EJB, между различными компонентами и между компонентами и другими CORBA-объектами базируются на использовании протокола IIOP. VisiBroker отвечает спецификации CORBA 2.3, которая для достижения максимальной совместимости требует реализации RMI-IIOP в терминах передачи объектов по значению.

Концептуальная модель Borland Application Server

Это означает, что типы данных Java (словари, векторы и др.) могут передаваться при работе с IIOP посредством IDL-типов («value»), в полном соответствии со спецификацией CORBA 2.3. Разумеется, и клиенты, и серверы «знают», как передаются такие данные. Контейнер EJB в Borland Applicaion Server — это объект CORBA. EJB-контейнер реализует все требования спецификации EJB 1.1, включая необязательные, а также некоторые элементы предварительной спецификации EJB 2.0. Контейнер EJB может поставляться и как автономная (stand-alone), полностью написанная на Java служба, и как часть интегрированной распределенной системы. Это означает, что можно управлять масштабируемостью и готовностью приложения в соответствии с предъявляемыми к нему требованиями.

EJB-контейнер Borland не накладывает ограничений на структуру системы с точки зрения выбора числа контейнеров и распределения компонентов между ними. Это обеспечивается распределенным протоколом управления транзакциями. Такая гибкость позволяет выбрать в процессе поставки приложения наиболее оптимальную с точки зрения производительности конфигурацию.

VisiBroker, встроенный в Application Server, автоматически распространяет контекст транзакций, используя для этого VisiTransact. Это означает, что когда клиент инициализирует транзакцию, а затем выполняет обращение к компонентам EJB, в контейнере осуществляется передача контекста транзакции, который и используется сервером при доступе к тем или иным ресурсам. VisiTransact использует двухфазную схему подтверждения транзакций. Та же двухфазная схема используется, если ее поддерживает JDBC-драйвер. Если используемый JDBC-драйвер ее не поддерживает, применяется однофазное подтверждение. Текущая версия Borland Application Server 4.1 включает усовершенствованные средства управления распределенными транзакциями VisiTransact с поддержкой JDBC 2.0 и XA.

Компилятор java2iiop, разработанный Borland, как и контейнер EJB, совместим с CORBA. Контейнер EJB «понимает» вызовы RMI, на которых построена технология EJB, но внутри себя для хранения объявлений интерфейсов он использует IDL-версии интерфейсов Java. Хотя java2iiop генерирует стабы и скелетоны CORBA непосредственно на основе Java-объявлений, можно сгенерировать IDL-декларации (например, для работы с другими языками программирования). CORBA-клиенты могут рассматривать EJB-контейнер как CORBA-сервер.

Все виды доступа к базам данных с использованием интерфейса JDBC управляются с помощью объекта DataSource, который прозрачным для разработчика образом управляет пулом соединений с базами данных и ассоциирует глобальные транзакции JTS с JDBC-транзакциями для баз данных.

Прикладная модель программирования J2EE предполагает активное использование технологий динамического создания информационного наполнения. Borland Application Server 4.1 включает Sun Java Web Server (JWS), поддерживающий соответствующие технологии — JSP (Java Server Pages) и сервлеты (Servlets). В перспективе планируется плавно перейти от JWS к Tomcat, разрабатываемому в рамках открытого проекта коллективом Apache.org.

Используемая в Borland Application Server служба долговременного хранения JDataStore является хранилищем данных на 100% Pure Java, поддерживающим многопользовательскую транзакционную работу с реляционными объектами, графикой и пользовательскими потоками данных. Представляя собой сверхкомпактное ядро, функционирующее под управлением стандартной Java-машины, JDataStore становится неплохим решением как для встраиваемых систем, так и для многоплатформных корпоративных систем с разнородными источниками данных. JDataStore содержит локальный и удаленный драйвер JDBC 2.0 Type-4 и включает набор высокоуровневых классов и компонентов Java-доступа к базе данных, совместимых с архитектурой JBuilder DataExpress.

Application Server включает в себя графическую консоль (рис. 4), которая выполняет роль главного центра управления, позволяя управлять серверами, останавливать и запускать службы и т.д. Как правило, Application Server запускается на мощных серверах под управлением Unix или Windows NT, в то время как консоль может быть размещена на любом компьютере, с которого удобно управлять распределенной системой. Имея один экземпляр консоли, пользователь получает доступ к любому серверу в сети. Application Server включает в себя Web-средства администрирования, предназначенные для установки или изменения конфигурации служб и, в первую очередь, Web-службы установки и изменения параметров конфигурации, влияющих на работу с HTML-файлами, сервлетами или страницами JSP.

Вопросы безопасности

Borland предоставляет широкий набор механизмов обеспечения защиты информации в системах, построенных на базе Application Server и VisiBroker. Основную роль здесь играет специализированный пакет Security Service (ISS) for Application Server, позволяющий устанавливать защищенные соединения между клиентами и серверами. Security Service поддерживает:

  • интеграцию механизмов безопасности EJB с СORBASec Security Service, что позволяет использовать дополнительные возможности по сравнению с достаточно простой моделью безопасности EJB;
  • службу HTTPS для Web-сервера, встроенного в Application Server, а также службу SSL, позволяющую реализовывать защищенные каналы передачи данных, поддержку целостности сообщений, аутентификацию посредством PKI и защищенное администрирование;
  • Gatekeeper — механизм, позволяющий устанавливать защищенные аутентифицированные соединения через межсетевой экран в предположении, что клиент и сервер находятся по разные стороны от него;
  • широкий набор способов аутентификации (NIS, сертификаты X.509, PKI, домены NT и др.), что позволяет интегрировать вновь создаваемые приложения на базе IAS в существующую инфраструктуру безопасности.

Особенно интересным, с этой точки зрения, выглядит совместное объявление компаний Entegrity Solutions и Borland об объединении усилий по разработке, интеграции и продвижению программных продуктов, реализующих механизмы защиты данных. (Entegrity Solutions — один из поставщиков программного обеспечения защищенных решений в области электронной коммерции типа «бизнес-бизнес».)

Используя средства Security Service и продукты Entegrity (AssureAccess и NetCrusader) разработчики получают возможность создания надежной, с точки зрения информационной безопасности, системы, поддерживающей механизмы безопасности J2EE/EJB/CORBASec, расширенного аудита, имеющей набор способов аутентификации, службы каталогов LDAP/X.500, защищенных протоколов SSL и HTTPS, инфраструктуры PKI.

Интеграция Application Server 4 и JBuilder 4

С ростом потребностей в комплексных приложениях электронного бизнеса, компании ищут решения, которые позволили бы создавать и эксплуатировать функционально богатые и в то же время надежные и масштабируемые Java-приложения, а грамотные инструменты являются основным компонентом, позволяющим встретить требования Internet-экономики во всеоружии [12].

Архитектурная модель Borland Application Server в терминах J2EE

Borland JBuilder — первая среда визуальной разработки на 100-процентно чистом» Java, не уступающая Delphi и C++Builder по удобству и богатству инструментов и компонентов и при этом функционирующая под управлением различных ОС (Windows, Linux или Solaris). JBuilder предлагает разработчикам открытую среду разработки на основе отраслевых стандартов, предназначенную для создания платформно-независимых апплетов, приложений, сервлетов, компонентов JavaBeans и Enterprise JavaBeans для платформы Java 2. Ориентированные на создание решений на платформе J2EE инструменты JBuilder 4 генерируют соответствующий стандартам код и, в то же время, способны учитывать расширения и специфику Borland Application Server.

JBuilder 4 содержит набор генераторов кода для создания компонентов EJB, включающий EJB Group (создание групп компонентов EJB), EJB Group from Descriptors (создание групп EJB по дескриптору развертывания), Enterprise JavaBean (универсальный мастер создания EJB), Entity Bean Modeler, EJB Test Client (генератор клиента для тестирования EJB) и EJB Interface (генератор интерфейсов Homeи Remote по классу компонента).

Инструментарий Entity Bean Modeler позволяет создавать отображение объектов на реляционные базы данных для источников, таблиц, индексов, и полей для Entity-компонентов EJB. При этом JBuilder 4 способен не только создавать базовые шаблоны для модели CMP (Container Management Persistent), но и способен автоматически генерировать на основе метаданных версию BMP (Bean Management Persistent) соответствующих компонентов — иерархических «наследников» версии CMP.

В среде JBuilder можно не только разрабатывать код компонентов EJB, но визуально редактировать дескриптор разверывания, включая отображение EJB Entities на таблицы баз данных (рис. 5). Это, однако, не исключает возможности работы из того же JBuilder со стандартным XML-представлением дескрипторов.

Среда разработки Borland JBuilder 4 (JDK 1.3) доступна на платформах Windows, Linux и Sun Solaris. VisiBroker 4.x и Application Server 4.x работают в среде Windows, Linux, Sun Solaris, HP-UX, IBM AIX и других операционных систем.

Литература

[1] «Application Servers: A Foundation for eCommerce and eBusiness», Steve Garone & Sally Cusack, 2000
[2] «Recommendations for Using DCE, DCOM, and CORBA Middleware», Joint Interoperability and Engineering Organization, Defense Information Systems Agency (DISA), 1998. http://diicoe.disa.mil/coe/atd/GuidanceFinal-v1a.doc
[3] «Java Development Guidelines», Joint Interoperability and Engineering Organization, Defense Information Systems Agency (DISA), May 2000. http:// diicoe.disa.mil/coe/atd/ddc_readme.htm
[4] «Application Servers and EAI», David Linthicum, EAI Journal, July 2000. http://www.eaijournal.com/Applicationintegration/AppServers.asp
[5] «CORBA and Software Architectures», William Ruh and Thomas Mowbray, EAI Journal, May/June 1999. http://www.eaijournal.com/ PDF/CORBA%20-%20Ruh.pdf
[6] ScreamingMedia, Business Wire, June 20, 2000. http://industry.java. sun.com/javanews/stories/story2/0,1072, 27040,00.html
[7] «Application Servers Fuel E-Business. Middleware evolves into a central element of web infrastructure», by Alan Radding, June 22, 2000. http://www.informationweek.com/shared/ printArticle?article=infoweek/791/preai.htm&pub=iwk
[8] Enterprise JavaBeans Frequently Asked Questions. http://java.sun.com/ products/ejb/faq.html
[9] Document orbos/99-02-05 (CORBA Components final submission). http://cgi.omg.org/cgi-bin/doc?orbos/99-02-05, http://cgi.omg.org/techprocess/ meetings/schedule/CORBA_Component_ Model_RFP.html
[10] CORBA Interoperability approved as ISO Standard, http://www.omg.org/ news/releases/pr2000/2000-10-25.htm
[11] «Sneaking Up On COBRA: The Race for the Ideal Distributed Object Model», Richard Hoffman, May 3, 1999. http://www.networkcomputing. com/shared/printArticle? article=nc/1009/1009f2full.html&pub=nwc
[12] «JBuilder 4 Brings e-Business Applications to Market Faster by Combining Team Development with New Enterprise RAD Features». http://www.borland.com/about/press/2000/announcingjb4.html

Сергей Орлик (sorlik@borland.ru), Сергей Макарьин (smakaryin@borland.ru) — сотрудники московского офиса компании Borland.