Главная » Java, Web » Типы серверных компонентов EJB

0

Существует три типа серверных компонентов EJB. Это компоненты EJB- сессий (session bean), компоненты EJB-сущностей (entity bean) и компоненты EJB на основе сообщений (message-driven bean). Рассмотрим характерные различия, которые отличают один тип компонентов EJB от другого.

Компоненты EJB-сессий (Session bean)

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

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

Компоненты EJB-сущности (Entity bean)

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

Компоненты EJB на основе сообщений (Message-driven bean)

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

Удаленный и локальный доступ

Компоненты EJB доступны как локально, так и удаленным образом. При обращении к удаленному компоненту EJB клиенты используют удаленный интерфейс компонента EJB и домашний удаленный интерфейс. Часто для простоты удаленный домашний интерфейс называют просто домашним интерфейсом. Клиент удаленного доступа может работать на удаленной машине, отличной от той, где расположен компонент EJB, и выполняться на независимой виртуальной машине Java. При удаленных обращениях к методам компонента EJB параметры передаются своими значениями.

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

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии