В общем, как уже упоминалось в других ответах, сессия во многих отношениях действует как хранилище. Таким образом, чтобы взаимодействовать с сеансом из другого класса, который находится за пределами платформы Servlet / JSP, необходимо получить ссылку на данный сеанс. Есть несколько способов, которыми это может быть достигнуто:
1) Передача сеанса как часть параметра метода (уже упоминавшегося в других ответах)
2) Привязка сеанса к локальной переменной потока к текущему выполняемому потоку (см. ThreadLocal ). Преимущество этого метода состоит в том, что он не объявляет конкретные параметры в сигнатуре метода класса, который должен использовать сеанс. Кроме того, если вызывающий поток проходит через библиотеку, а затем снова вызывает некоторый определенный класс, например, Сервлет-> YourClass0 -> Apache Some Library -> YourClass1, сеанс также будет доступен для YourClass1.
Однако локальный поток также должен быть очищен, когда исполняющий поток возвращается через начальный компонент (скажем, сервлет), иначе, безусловно, могут быть утечки памяти.
Кроме того, обратитесь к вашей конкретной структуре для обработки сеансов, вышеупомянутый механизм прекрасно работает в Tomcat.