首先我们直奔web.xml,打开可以看到
Faces Servlet
javax.faces.webapp.FacesServlet
1
工程启动时,FacesServlet将被装载,用来处理JSF请求。
Web.xml还为我们配置了监听器
com.esri.adf.web.util.ADFServletContextListener
ADFServletContextListener 是整个server工程启动中的核心,实现了两个接口ServletContextListener和HttpSessionListener
ServletContextListener负责监听整个工程的ServletContext的变化,HttpSessionListener负责监听web当前会话的变化,当有一个新用户发送请求时,应用会为这次请求建立一个新会话。这时ADFServletContextListener 的sessionCreated(HttpSessionEvent event)方法会被执行。但是WebSession却不是在这个时候被创建的,那么什么时候WebSession会被创建呢,在web.xml中可以看到下面的配置信息:
ADFFilter
com.esri.adf.web.util.ADFFilter
每当用户请求时都会经过ADFFilter过滤,ADFFilter会截获httpsession中保存的websession对象,如果为空则创建WebSession。
通过上面三段配置文件,现在来梳理一下工作流程,当web启动时,首先装载 ADFServletContextListener,ADFServletContextListener创建WebApplication ,当用户请求时,ADFFilter截获请求,创建WebSession,WebSession中包含了该会话所用的WebContext。那么这个经过一番周折,终于得到了WebContext,这个WebContext正式我们开发工作的核心。