Jetty源码解析(web.xml的处理机制)
org.eclipse.jetty.webapp 包下的
StandardDescriptorProcessor类。该类对象会在WebAppContext的doStart方法启用
注册了遍历web.xml中的元素中的方法,后续会用反射机制来调用这些方法。比如filter元素用visitFilter处理。
IterativeDescriptorProcessor的process ()方法会对web.xml中的每个元素进行遍历。web.xml中的每个元素算是一个node。比如 <filter></filter>包围起来的算是一个node。<filter-mapping></filter-mapping>包围起来的也是一个node。
process()方法在WebAppContext的doStart()方法调用的时候被调用。
process()还会调用end(context,descriptor);
end()方法会进行filter、servlet等的设置,如
context.getServletHandler().setFilters(_filterHolders.toArray(new FilterHolder[_filterHolderMap.size()]));
filter的相关内容保存在servletHandler对象中。
ServletContextHandler构造了包含ServletHandler等的Context对象。
ServletContextHandler()的构造函数调用relinkHandlers方法构建servletHandler对象(通过getServletHandler方法构建)
WebAppContext类的层次如下