Моя первоначальная проблема была: EJB3 + Struts2. Struts создает новый сессионный компонент для каждого запроса, даже если он имеет состояние.
Struts ничего не делает сам по себе, он делает только то, что вы ему скажете. И я подозреваю, что вы просто неправильно используете вещи. Может помочь показ кода для иллюстрации проблемы.
Теперь я обнаружил, что JSF2 повторно использует один и тот же сессионный компонент для каждого запроса, даже если он не имеет состояния.
В общем случае это не так, вы можете получить любой экземпляр сессионного компонента без состояния (SLSB). И даже если по каким-то причинам вы получаете тот же экземпляр в вашей конкретной ситуации (возможно, из-за конфигурации пула компонентов), это не должно быть проблемой при использовании SLSB, вы должны не заботиться о том, что экземпляр, который вы получаете, и, конечно, не полагайтесь на состояние экземпляров (поскольку они не сохраняют состояние).
Возвращаясь к вашему вопросу, я подозреваю, что вы неправильно используете SLSB и ожидаете, что это неправда:
- Не ожидайте получения недавно инициализированных экземпляров между вызовами, это не то, что означает отсутствие состояния.
- На самом деле, не ожидайте ничего об экземпляре, который вы получите.
- Не полагайтесь на состояние экземпляра SLSB (они не имеют состояния, вы не должны полагаться на состояние).
- Не полагайтесь на переменную экземпляра между удаленными вызовами.
- На самом деле, избегайте использования переменных экземпляра, вероятно, в них нет необходимости.
Похожие вопросы