Если ваши сервлеты хорошо написаны, они уже не должны иметь какую-либо бизнес-логику внутри, а просто логику управления запросом / ответом / предварительной обработкой / постобработкой. Бизнес-логика уже должна быть размещена в автономных javabean-подобных классах доменов / моделей. Логика базы данных уже должна быть помещена в отдельные классы DAO. И так далее. Вы можете просто повторно использовать их все в JSF.
Тем не менее, может быть полезно знать, что JSF (при работе поверх Servlet API - в общем случае) управляет компонентами, определяющими размер запроса, как атрибутами HttpServletRequest
, а объектными компонентами - как атрибутами HttpSession
. , приложение определяет область действия bean-компонентов как атрибуты ServletContext
. Также может быть полезно знать, что все эти атрибуты запроса, сеанса и приложения доступны для ExternalContext#getRequestMap()
, #getSessionMap()
и #getApplicationMap()
. Теперь вы должны понимать, что вы можете просто получить к ним доступ обычным способом из сервлета.
В любом случае, когда есть техническая необходимость , необходим для доступа к FacesContext
внутри Servlet
или Filter
, затем немедленно прекратите его кодирование и переосмыслите свой подход на основе приведенных выше фактов. Не лучше ли это сделать в новом управляемом бобе? Или, может быть, PhaseListener
?