EJB (Enterprise JavaBeans) — компонентная модель и технология распределенных вычислений, ориентированная на решение следующих задач (характерных для "среднего слоя" в трехзвенных распределенных системах):
Основными понятиями технологии EJB являются следующие:
Компоненты EJB выполняются внутри EJB-контейнера, который, в свою очередь, выполняется внутри EJB-сервера. Компонент EJB имеет два внешних интерфейса (Home и Remote), через которые клиент взаимодействует с компонентом.
Взаимодействие начинается со входа в Home-интерфейс [1]. Клиент обращается к интерфейсу и создает через него экземпляр (объект) компонента. Remote-интерфейс используется для вызова бизнес-методов компонента, реализующих логику приложения. Таким образом, последовательность действий при использовании компонента выглядит следующим образом:
1. Клиент ищет Home-интерфейс нужного компонента по его имени через службу имен JNDI (клиенту возвращается в результате поиска Home-интерфейс этого найденного компонента).
2. Клиент, через найденный Home-интерфейс, вызывает функцию создания экземпляра компонента на стороне сервера (клиенту возвращается Remote-интерфейс созданного экземпляра компонента).
3. Сервер создает экземпляр компонента.
4. Клиент вызывает бизнес-метод компонента через его Remote-интерфейс.
5. Сервер вызывает бизнес-метод компонента.
EJB-контейнер реализует для находящихся в нем компонента такие сервисы как транзакции (transaction), управление ресурсами, управление версиями компонент, их мобильностью, настраиваемостью, мобильностью, жизненным циклом. Так как EJB-контейнер реализует все эти функции, то разработчик EJB-компонента может не реализовывать их самостоятельно, а просто вызывать соответсвующие методы у контейнера (правила вызова методов у контейнера описываются в спецификации). Как правило, в одном EJB-контейнере может находиться несколько однотипных EJB-компонентов.
Клиентские приложения вызывают методы на удаленных EJB-компонентах через EJB-объект. EJB-объект реализует удаленный интерфейс'' EJB-компонента на сервере. Суть в том, что находящийся на сервере EJB-компонент, помимо бизнес-функций, ради которых он был а разработан, должен реализовывать также некоторые функции, определяемые спецификацией, которые служат для ``управления'' EJB-компонентом со стороны контейнера. EJB-объект реализует лишь бизнес-интерфейс для EJB-компонента, являясь, в некотором смысле, ``промежуточным'' звеном между клиентом и EJB-компонентом.
EJB-объекты и EJB-компоненты представляют собой разные классы, хотя ``снаружи'' (при взгляде на их интерфейсы), они выглядят одинаково. Это происходит потому, что они реализуют один и тот же интерфейс (а именно, интерфейс, описанный для EJB-компоненты). Однако при этом они выполняют совершенно разные функции. EJB-компонента выполняется на сервере, внутри EJB-контейнера и реализует бизнес-логику, в то время как EJB-объект выполняется у клиента и удаленно вызывает методы у EJB-компоненты [2].
На стороне клиента Remote-интерфейс и Home-интерфейс оформлены в виде классов (EJB объект на рис. 1), которые скрывают сетевые взаимодействия на основе RMI с сервером приложений. Клиент работает с объектами так же, как с объектами в том же адресном пространстве, что и само приложение, хотя на самом деле происходят сетевые вызовы и приложение выполняется совсем на другой вычислительной машине.
Рис. 1.  
Список литературы
1. Е.Игумнов. Методология построения корпоративных информационных систем на основе технологии EJB. — http://www.citforum.ru/programming/cis_ejb/cis_ejb_01.shtml#1
2. С. Семихатов. Краткое введение в технологию Enterprise JavaBeans. - http://www.javable.com/columns/serv_side/workshop/05/