КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Архитектурная методика EJB
Оставшаяся часть главы посвящена архитектуре корпоративных JavaBeans (Enterprise JavaBeans, EJB), которая определяет стандартную модель программирования, направленную на построение распределенных объектно-ориентированных серверных Java-приложений. В силу стандартного статуса этой модели существует (и эксплуатируется) возможность написания beans с заранее «пакетированной» полезной функциональностью. Задача программиста EJB, таким образом, заключается в том, чтобы связать эти пакеты с прикладной функциональностью и тем самым сформировать законченное приложение. Подобно J2EE, архитектура EJB ориентирована на реализацию одного из основных принципов проектирования на Java — пресловутого девиза «пишется однажды, исполняется везде». JVM позволяет запускать Java-приложение на любой операционной системе. Впрочем, серверные компоненты выставляют ряд требований по дополнительному обслуживанию (например, по предоставлению служб транзакций и безопасности), предоставить которые непосредственно JVM не в состоянии. Как в J2EE, так и в EJB эти службы предоставляются посредством набора стандартных, независимых от конкретного производителя интерфейсов, обеспечивающих доступ к вспомогательной инфраструктуре, — совместными усилиями они организуют обслуживание, предусматриваемое любым сервером приложений. В каждом J2EE-c0BMecTHM0M сервере приложений предусматривается EJB- контейнер (EJB container), координирующий исполнение компонентов приложения. Выражаясь более приземленно, контейнер предоставляет процесс операционной системы, в котором размещается один или (в большинстве случаев) несколько EJB-компонентов. На рис. 16.3 изображено отношение между сервером приложений, контейнером и предоставляемыми службами. Вкратце, сразу после запуска клиентом серверного компонента контейнер автоматически назначает ему поток и запускает экземпляр вызванного компонента. От имени компонента контейнер управляет всеми ресурсами, а также взаимодействием компонента и внешних систем. Компонентная модель EJB определяет базовую архитектуру EJB-компонента — она задает структуру его интерфейсов и механизмов взаимодействия с контейнером и другими компонентами. Кроме того, эта модель регламентирует разработку компонентов с возможностью совместной работы в крупном приложении. Рис. 16.3. Пример представления размещения архитектуры EJB
В спецификации EJB версии 1.1 выделяют два типа компонентов: сеансовые beans (session beans) и beans-сущиости (entity beans). ♦ Сеансовые beans обычно содержат бизнес-логику и обслуживают клиентов. Сеансовый bean делится на два подтипа: без состояния (stateless) и с запоминанием состояния (stateful). · Сеансовый bean без состояния (stateless session bean) не вступает в диалог с вызывающим процессом. Таким образом, информация о состоянии от имени клиентов не сохраняется. Клиент, получающий ссылку на сеансовый bean без состояния в контейнере, неоднократно вызывает через него экземпляр bean. В период между последовательными вызовами службы никаких гарантий относительно связывания любого конкретного экземпляра сеансового bean без состояния клиенту не предоставляется. EJB-контейнер делегирует клиентские вызовы сеансовым beans без состояния лишь по мере необходимости; таким образом, у клиента нет сведений о том, с каким bean ему придется общаться. Отсюда следует, что хранить клиентское состояние в сеансовом bean без состояния бессмысленно. · Сеансовый bean с запоминанием состояния должен вступать в диалог с вызывающим процессом и сохранять информацию о состоянии этого диалога. С того момента как клиент получает ссылку на сеансовый bean с запоминанием состояния, все последующие вызовы по этой ссылке проходят через один и тот же экземпляр bean. Для каждого клиента, создающего экземпляр bean, контейнер формирует новый, специализированный сеансовый bean с запоминанием состояния. Следовательно, в таком bean клиенты вольны сохранять любую информацию о состоя- пип, которая гарантированно сохраняется в нем до следующего обращения. Обязанность по управлению жизненным циклом сеансовых beans с запоминанием состояния берут на себя EJB-контейнеры. Если состояние bean в течение определенного периода времени остается без употребления, EJB-контейнер записывает его состояние на диск, а при последующем клиентском вызове bean осуществляет автоматическое восстановление. Этот механизм называется пассивацией/активацией (passivation and actication) bean с запоминанием состояния. Пассивацию мы чуть позже разберем более подробно. ♦ Beans-сущности, как правило, представляют бизнес-объекты данных. Члены данных bean-сущности напрямую отображаются на отдельные элементы данных, хранящиеся в связанной базе данных. Обращаются к beans- сущностям чаще всего сеансовые beans, предоставляющие клиентские службы бизнес-уровня. Beans-сущности подразделяются на два типа: с контейнерным управлением устойчивостью (container-managed persistence) и с самоуправлением устойчивостью (bean-managed persistence). Устойчивость в данном контексте означает способ записи и считывания данных bean (как правило, они хранятся в строках таблиц реляционных баз данных). ♦ Beans-сущности с контейнерным управлением устойчивостью предполагают автоматическое отображение данных, представляемых bean, на связанное постоянное хранилище данных (например, на базу данных), осуществляемое средствами контейнера. Контейнер ответствен за загрузку данных в экземпляр bean и последующую (происходящую в определенные моменты — например, в начале и в конце транзакции) запись изменений в постоянное хранилище данных. Устойчивость с контейнерным управлением базируется на службах контейнера и не требует прикладного кода — благодаря тому, что контейнер генерирует код доступа к данным, реализация упрощается. ♦ Beans-сущности с самоуправлением устойчивостью предполагают ответственность bean за обращения к представляемым постоянным данным, которые обычно осуществляются посредством ручных вызовов по JDBC. Устойчивость под управлением beans предоставляет разработчику дополнительную гибкость, необходимую для выполнения слишком сложных для контейнера операций, а также для обращения к не поддерживаемым контейнером источникам данных — в частности, к специальным или унаследованным базам данных. Реализация устойчивости под управлением beans требует от программиста более серьезных усилий, однако в определенных ситуациях труды компенсируются возможностью дополнительной оптимизации доступа к данным, а значит, и более высокой (по сравнению с устойчивостью с контейнерным управлением) производительностью. В табл. 16.4 расписывается реализация архитектурой EJB основных требований по атрибутам качества, предъявляемых Sun к архитектуре J2EE в целом. Пример представления размещения архитектуры J2EE/EJB приводится на рис. 1G.4.
Рис. 16.4. Пример J2ЕЕ/EJВ – совместимой реализации
Дата добавления: 2015-04-25; Просмотров: 803; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |