EJBs с сохранением информации в веб-приложении?

Я никогда не использовал EJBs с сохранением информации. Я понимаю, что EJB с сохранением информации может быть полезным с клиентом Java.

Но я задаюсь вопросом: в этом случае использовать их на веб-приложении?Еще как? Мы должны поместить эти бобы с сохранением информации в Сессию (из-за http не сохраняющего состояние)?

Действительно ли это - хорошая практика? (не дебатируя слишком много о с сохранением информации по сравнению с не сохраняющим состояние)

15
задан BalusC 11 May 2010 в 14:05
поделиться

1 ответ

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

В каком случае использовать их в веб- приложении?

Традиционным примером SFSB и веб-приложения является корзина для покупок. Но в то же время вы можете сделать то же самое с HttpSession .

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

А как? Должны ли мы помещать эти bean-компоненты с отслеживанием состояния в сеанс (из-за отсутствия состояния http)?

Модель EJB является более богатой моделью, чем HttpSession , поскольку EJB являются транзакционными компонентами , и есть явные обратные вызовы для пассивации и активации SFSB. Это связано с повышенной сложностью правильного использования SFSB, в частности (1) обработкой исключений и (2) параллелизмом и (2) удалением и тайм-аутом SFSB.Подробнее см. Мои ответы здесь:

Если вы хотите их использовать, вам нужно сначала найти SFSB, чтобы получить ссылку на один свежий удаленный экземпляр. Затем вам нужно будет где-то сохранить эту ссылку, чтобы можно было повторно использовать ее в запросах. Это где-то обычно является HttpSession , что означает, что даже если вы используете SFSB, вы не можете полностью избавиться от него.

С EJB2 удаленная ссылка, называемая дескриптором , может быть сериализована для повторного использования позже. Тогда можно было сохранить if, например, в базе данных, хотя я никогда этого не видел. Я не знаю, возможно ли это еще с EJB3.

Является ли это хорошей практикой?

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

PS: Я использовал SFSB в веб-приложении, и это действительно может быть сложнее, чем HttpSession , но в конечном итоге это сработало.

30
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: