Я новичок в ejbs и cdi. По моему мнению, ejb с сохранением состояния хранит данные в переменных экземпляра и уничтожает состояние ejb после завершения запроса.Внедрение stateful ejb в сервлет
Недавно я посетил интервью, на котором интервьюер спросил меня, какой ejb я буду использовать в онлайн-магазине.
Если мне нужно сделать это без ejbs, я создаю HttpSession, а затем добавлю интерес пользователей к сеансу, а затем покажу ему еще одну страницу, чтобы продолжить или сделать платеж или выйти.
Если я хочу выполнить то же самое с использованием stateful ejbs, я не понимаю, почему я должен использовать stateful ejbs, каково его значение? Поскольку после завершения запроса ejb уничтожается, и пользовательский интерес/детали корзины уничтожаются.
Во-вторых, что я не могу понять о cdi, предположим, что я вставляю класс службы в свой сервлет, потому что инъекция происходит только один раз, когда будет только один экземпляр класса службы. Когда приходит более двух запросов, переменные экземпляра stateful ejb становятся поврежденными. Поэтому, я думаю, когда я использую stateful ejbs, я должен использовать аннотацию @RequestScoped. Я прав?
Крошечная ручка с этим в противном случае безупречным ответом: в -STATEFUL-EJB было бы очень плохой идеей (tm) сделать то же самое с безгосударственным EJB. – Gimby
Ссылки помогли. У меня есть вопрос. Что делать, если я хочу уничтожить сессионный компонент с состоянием. Например, я могу использовать 'httpSession.invalidate()' для уничтожения/удаления/уничтожения сеанса. Предположим, что клиент купил или вышел сейчас, я хочу удалить сессионный компонент с состоянием. Как я могу это сделать? –
Вы можете вызвать метод, аннотированный с помощью @Remove. Однако я не уверен, что произойдет с ссылкой в сервлете - дайте мне знать результат, если вы попробуете это :) – 6ton