EJB сессионные компоненты без сохранения состояния и сессионные компоненты с сохранением состояния

Я просмотрел различные книги о сессионных компонентах с сохранением состояния и состоянии и о том, как они работают. Я хочу знать реальное использование этих ejbs и преимущества перед использованием простых классов Java. В основном, когда вы идете на ejbs без гражданства и когда вы идете на ejbs с состоянием. Я хочу приложение в реальном времени.

4 ответа

Решение

Использование этих типов ejbs обычно находится на уровне обслуживания в качестве классов обслуживания.

EJB3-компонент без сохранения состояния и с состоянием на самом деле является POJO (с некоторыми аннотациями), и они не имеют большой разницы с обычными классами.

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

  • они могут быть вызваны удаленно (например, протокол RMI).
  • они могут использовать ресурсы контекста сервера приложений, такие как соединение с БД и транзакции.

без сохранения состояния или с сохранением состояния: - если задача или процесс могут быть выполнены за один шаг (с помощью одного вызова метода), сохранение без сохранения состояния является правильным вариантом, подобным процессу аутентификации - если для задачи требуется ряд вызовов метода (более одного), и вы необходимо сохранить предыдущие результаты, чтобы использовать их при следующем вызове, а затем перейти к состоянию. как процесс доставки (выберите элементы, добавьте / удалите, а затем сделайте транзакцию)

http сессия или с состоянием?

ejbs могут обслуживаться на сервере приложений, и у них могут быть клиенты другого типа, такие как обычное приложение Swing или..., поэтому в этих случаях вы не можете ретранслировать сеанс http.

если ваш appserver и webserver различны (распределены), не рекомендуется хранить данные в сеансе http и передавать / возвращать их на сервер приложений (из-за сетевых издержек).

  • Сессионный компонент без сохранения состояния облегчен: он не хранит информацию о конкретном пользователе. Они обычно используются статическим способом. Например, клиент, запрашивающий информацию о продукте, будет связываться с сессионным компонентом без сохранения состояния. ("Вы хотите цену продукта" YXZ ", вот, пожалуйста!")

  • Сессионный компонент с сохранением состояния, однако, помнит, что это информация клиента Они содержат данные о действиях пользователя. Например, скажем, пользователь проходит через корзину. Шаги будут сохранены в сессионном компоненте с состоянием (например, пользователь его на шаге оплаты).


Вы действительно нуждаетесь в обоих типах сессионных компонентов на любом веб-сайте. Если ваш веб-сайт не является настолько базовым, что все можно сделать с помощью сессионного компонента без сохранения состояния (действительно, веб-сайт только для чтения).

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

Разработчики предпочитают поддерживать состояние на веб-уровне в современных корпоративных приложениях. Я никогда не видел реального веб-приложения, использующего Stateful Session Bean. Это также проблема масштабируемости.

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

Другие вопросы по тегам