# Additional JARs (over and above the default JARs listed above) to skip when # scanning for Servlet 3.0 pluggability features. These features include web # fragments, annotations, SCIs and classes that match @HandlesTypes. The list # must be a comma separated list of JAR file names. org.apache.catalina.startup.ContextConfig.jarsToSkip=
扫描Servlet 3.0插件特性时,需要跳过的jar包,也就是不支持插件特性的jar包 --------------------------------------------- 哪些特性: web fragments, annotations, SCIs and classes that match @HandlesTypes
--------------------------------------------- (1)web-fragment是servlet3.0的新特性, 可以在jar包的WEB-INF/lib/web-fragment.xml配置东西
(2)annotations,是servlet3.0支持注解了,如下:
@WebServlet 声明一个servlet。
@WebInitParam 指定初始化参数。
@WebFilter 声明servlet过滤器。
@WebListener 声明WebListener
@HandlesTypes 声明ServletContainerInitializer可以处理的类类型。
@HttpConstraint 此注释在ServletSecurity批注中用于表示要应用于所有HTTP协议方法的安全性约束,对于这些方法,ServletSecurity批注中不会出现相应的HttpMethodConstraint元素。
@HttpMethodConstraint 此注释在ServletSecurity批注中用于表示特定HTTP协议消息的安全性约束。
@MultipartConfig 可以在Servlet类上指定的注释,指示Servlet的实例需要符合multipart/form-data MIME类型的请求。
@ServletSecurity 此注释用于Servlet实现类,以指定Servlet容器在HTTP协议消息上强制执行的安全性约束。
(3)SCIs and classes that match @HandlesTypes "SCIs"是指Servlet Container Initializers,也是Servlet 3.0的新功能。 可以实现ServletContainerInitializer接口,并在META-INF/services/目录下创建javax.servlet.ServletContainerInitializer文件,指定实现了ServletContainerInitializer接口的类,以便Servlet容器在启动时加载并执行这些初始化器。
log4j2,就是使用ServletContainerInitializer来实现自动启动的。
当使用@HandlesTypes注解标记一个实现了ServletContainerInitializer接口的类时,容器会在启动时扫描类路径中所有的类,找到所有符合@HandlesTypes指定类型的类,并将其传递给标记的ServletContainerInitializer实现类的onStartup方法中。
如: @HandlesTypes(WebApplicationInitializer.class) public class SpringServletContainerInitializer implements ServletContainerInitializer
@HandlesTypes({Class1, Class2, Class3, ...}) public class AnInitializer implements ServletContainerInitializer { public void onStartup(Set<Class<?>> classes, ServletContext context) throws ServletException { // initialization code... } } tomcat找到类(继承,实现了Class1, Class2, Class3,@HandlesTypes中指定的类), 作为第一个参数,传递给onStartup()方法。
|