Ответ
В архитектуре Java EE/Jakarta EE веб-приложения, сессия (HttpSession) находится в контексте веб-контейнера (например, Tomcat, Jetty). Над ней в иерархии располагаются:
- Контекст сервлета (
ServletContext) — объект, общий для всех сессий и сервлетов в рамках одного веб-приложения (файлWAR). В нем хранится общедоступная информация на уровне приложения. - Сам веб-контейнер, который управляет жизненным циклом
ServletContext,HttpSessionи отдельныхServlet.
Иерархия (сверху вниз):
- Веб-контейнер (Tomcat) -> 2.
ServletContext(на уровне приложенияWAR) -> 3.HttpSession(на уровне пользователя) -> 4.ServletRequest/ServletResponse(на уровень одного HTTP-запроса).
Пример получения контекста из сессии:
// В сервлете или фильтре
HttpSession session = request.getSession();
ServletContext applicationContext = session.getServletContext(); // Контекст приложения
// В ServletContext можно сохранять глобальные атрибуты
applicationContext.setAttribute("APP_NAME", "MyEnterpriseApp");
Примечание для Spring: В Spring Framework аналогом ServletContext является ApplicationContext (корневой контекст приложения Spring), но это абстракция фреймворка, а не часть спецификации Java EE.