2013-11-25 5 views
1

У меня вопрос EJB.Поделитесь Stateful EJB для разных пользовательских интерфейсов?

Считайте, что у нас есть бобы с натуральным выражением (простая корзина магазина), и пользователь получает свою сессию с помощью простого настольного приложения, а не может продолжать свой процесс с помощью мобильного (другого модуля ui) или сети, поэтому вопрос:

Как слить два сеанса с состоянием, когда сеансы предназначены для одного пользователя?

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

и еще один вопрос: в чем разница между апатридом и одиночным EJB ?!

ответ

1

Как бы слить два сеанса с состоянием, когда сеансы для одного пользователя ? есть ли что-нибудь для самого EJB?

Нет, в JEE нет такого слияния.

Тем не менее, вы можете использовать одну и ту же ссылку на состояние для разных клиентов. Когда вы получаете ссылку на сессионный компонент Stateful, используя JNDI-поиск или вложение зависимостей, Container создает новый экземпляр компонента Stateful, которому присваивается уникальный идентификатор объекта.

Ссылка ejb знает эту уникальную идентификацию, поэтому каждый запрос, который вы используете с использованием этой ссылки, будет обрабатываться в том же экземпляре Stateful.

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

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

Что вам нужно решить, так это сделать эту ссылку ejb доступной для всех ваших клиентов.

и еще один вопрос: в чем разница между апатридом и одиночным EJB ?!

Среди других отличий, тем более актуальным в контексте предыдущего вопроса являются:

  • Stateless

    • один экземпляр для каждого запроса
    • не имеет диалоговый состояние
  • Синглтон

    • один экземпляр для каждого приложения
    • имеет состояние диалога
    • состояние является общим для всех клиентов
  • Stateful

    • один экземпляр на одного клиента (ссылка)
    • имеет диалоговое состояние
    • государство Availabe только своего клиента
+0

Спасибо за ответ чувак, ну я не буду использовать DI для инициализации (имеющ) боб, я знаю, что это возможно, я m просто ищет любое возможное существует решение, которое, как вы упомянули, я не думаю, что есть какой-то неявный способ. Второй заключается в том, что в чем разница между апатридом и синглтоном? ни состояние. Спасибо приятель. –

Смежные вопросы