Как получить новый сессионный компонент с состоянием в потоке сервлета? - PullRequest
6 голосов
/ 14 мая 2010

Я экспериментирую с EJB3

Я хотел бы внедрить сессионный компонент с сохранением состояния в сервлет, чтобы каждый пользователь, который запускает сервлет, получил новый компонент.

Очевидно, я не могу позволить бину быть переменной экземпляра для сервлета, так как это будет общим. И, по-видимому, введение локальных переменных недопустимо.

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

Есть ли правильный способ сделать это? Кажется, что я пытаюсь сделать это довольно просто, в конце концов, мы бы хотели, чтобы каждый новый покупатель нашел пустую корзину.

1 Ответ

14 голосов
/ 14 мая 2010

Вы не можете использовать new, чтобы получить новый SFSB.

Что вы обычно делаете, это lookup новый, используя InitialContext.

MyBean bean = (MyBean) new InitialContext().lookup( name );

Затем вы получаете ссылку на конкретную SFSB, которую вы можете использовать в разных запросах.

С этот ответ :

Обычно вы не должны вводить SFSB, если это не в другой SFSB или в клиент Java EE. Вы должны использовать @EJB на ссылочный класс (например, ваш сервлет) объявить ejb-ref и затем выполните поиск JNDI в коде, чтобы получить экземпляр. Этот экземпляр может быть помещен непосредственно в ваш Http сессия.

Для получения дополнительной информации о SFSB вас могут заинтересовать другие ответы от меня:

Надеюсь, это поможет.

...