, как обсуждалось здесь Display username in jsp redirected from a servlet, чтобы получить тот же экземпляр компонента Sessionful Session Bean, я должен сохранить его в связанной HttpSession. Это работает хорошо, но в сервлете я сделал так:Получение @EJB в контексте
SessionCart cart = (SessionCart) request.getSession().getAttribute("cart");
if (cart==null){
cart = new SessionCart();}
Где атрибут «корзина» является тот, где я спас инициализированную тележку. Проблема в том, что если корзина ранее не была инициализирована, строка cart = new SessionCart(); инициализировать компонент, не относящийся к Контексту, поэтому entitymanager, полученный by @PercistenceContext, имеет значение null. Я пытался использовать аннотацию
@EJB
private SessionCart cart;
, но это один создать новый сессионный тележку в любом случае, без моего контроля (так что если у меня есть корзина, связанные с пользователем еще, я создать новый и я мусор его ... это не так хорошо). Мой вопрос: могу ли я создать новый Sessionful Session Bean без использования аннотации @EJB и связать его с контекстом? Поэтому я могу контролировать, когда я хочу его создать.
я нашел даже путь SES = (SessionCart) новый InitialContext() .lookup ("Java: глобальный/ibei/EJB/SessionCart"); как вы думаете, что лучше? Это первый раз, когда я вижу экземпляр класс –
Neo87
Это ручной поиск, если вы не используете удаленные EJB, я бы предпочел экземпляр, поскольку он безопасен по типу. –
Thx, отличное объяснение, наконец, я нашел отличный способ сделать это! – Neo87