Использование внедрения CDI в сервлет

Я пытаюсь @Inject bean-компонент @SessionScoped в фильтр

@WebFilter("/*")
public class IdentityFilter implements Filter, Serializable {

    @Inject
    private LoginUser loginUser;
...

, где LoginUser равно @SessionScoped

Намерение состоит в том, что loginUser представляет вошедшего в систему пользователя для сеанса.

Проблема в том, что я не всегда получаю loginUser из текущего сеанса, я получаю «утечку» между сеансами, поскольку объект LoginUser одного сеанса используется совместно с другим сеансом. Очевидно, это не хорошо.

Мне интересно, связано ли это с тем, что объект Filter является одноэлементным или, по крайней мере, повторно используется контейнером (glassfish) между запросами и сеансами. (Правильно?)

Есть ли лучший способ получить объект LoginUser для текущего сеанса без использования свойства в фильтре?

10
задан BalusC 13 April 2012 в 03:33
поделиться