В чем разница между объектом EJB и компонентом реализации? - PullRequest
1 голос
/ 15 ноября 2011

В этой книге Enterprise JavaBeans 3.1 они говорят об объектах EJB и объектах реализации.Я имею в виду то, что я прочитал о сессионных компонентах без сохранения состояния:

Как только экземпляр находится в пуле Method-Ready, он готов к обслуживанию клиентских запросов.Когда клиент вызывает бизнес-метод для объекта EJB, метод calll делегируется любому доступному экземпляру в пуле готовности к методу.Пока экземпляр выполняет запрос, он недоступен для использования другими объектами EJB.Когда экземпляр завершен, он сразу же доступен любому объекту EJB, которому он нужен.Экземпляры сеанса без состояния выделяются объекту EJB только на время одного вызова метода.

Я понимаю, как работают бины сеанса без состояния, но я не вижу разницы между объектом EJB и сеансом без состоянияслучаи?

Я думал, что создал EJB, когда я, например, аннотирую класс с помощью @Stateless?

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Я думаю, что он ссылается на объект EJB как на поле вашего класса, которое ссылается на EJB.
Это не экземпляр EJB - это прокси, который дает вам доступ к экземпляру EJB.

Следовательно:

public class YourClass {

    @EJB
    private MyEJB myEjb;  // This is a proxy - not a concrete EJB instance
}

Во время доступа, т. Е. myEjb.doSomething(), контейнер ищет бесплатный экземпляр EJB, для которого будет выполнен вызов.В другой раз, когда вы вызываете myEjb.doSomething(), контейнер может служить вам другим экземпляром EJB.

Оба раза вы используете один и тот же myEjb объект , в то время как вызывается метод (вероятно)разные экземпляры EJB .

Вот как я бы понял этот абзац.

0 голосов
/ 15 ноября 2011

Я понимаю, как работают сессионные компоненты без сохранения состояния, но я не вижу разницы между EJB-объектом и экземплярами сеанса без сохранения состояния?

Я думаю, что ваша путаница заключается в использовании термина "объекты EJB"

Я не думаю, что есть какой-то особый термин «объекты EJB». Может быть, вы можете прочитать

Когда экземпляр выполняет запрос, он недоступен для использования другими объектами EJB

а

Пока экземпляр выполняет запрос, он недоступен для использования любым другим клиентом

и это

Экземпляры сеанса без сохранения состояния выделяются объекту EJB только на время одного вызова метода.

как

Экземпляры сеанса без сохранения состояния выделяются клиенту только на время одного вызова метода. Второй звонок от клиента использует экземпляр из свободного пула

("клиент" - может быть сервлетом, сессионным компонентом, mdb или компонентом, управляемым CDI, или POJO, который выполняет поиск JNDI для получения ссылки на ejb)

0 голосов
/ 15 ноября 2011

Среда EJB предоставляет такие сервисы, как транзакционность для ваших классов имплементации, и это делается путем инверсии управления.
Когда вы пишете сессионный компонент, вы пишете только бизнес-логику приложения, а контроллер EJB обрабатывает клиентские вызовы и все промежуточное программное обеспечение. Для этого он генерирует объекты EJB, дополненные дополнительной функциональностью, а также содержащие вашу бизнес-логику. Когда вы аннотируете свой класс, вы указываете контейнеру EJB рассматривать его как основу для объектов EJB.
Что отрывок хочет пояснить, что сессионные компоненты без сохранения состояния не сохраняют свое «состояние» дольше, чем один клиентский запрос. (Не как бобы с состоянием)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...