• tomcat7的web.xml的xml片段与注解资源的发现处理逻辑


    1、metadata-complete 属性

    Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。 如果为true,表示部署描述文件,涵盖了所有的内容(即不支持可插的注解支持。),如果为false,除了解析部署描述文件外,还将对相关jar包中含“声明处理的注解”进行解析。

    2、web-fragments是通过jarscanner去扫描,然后对应callback去做文件识别和解析。

         这个过程中即使不存在“meta-inf/web-fragment.xml”,那么也会产生空webXML的对象。 but why? 这样相当于于标识了所有jar包,为后面扫描class文件(见第三点)做准备,相当于都有一个base path。 而且,metadata-complete=false时,虽然xml片段可能不存在,但还有可能存在响应的注解的实例。

    3、ServletContainerInitailizer与@HandlerTypes注解。

      通过service load机制,发现对应资源配置文件中希望add的ServletContainerInitailizer的实现,

      然后看该sci的有没声明HandlerTypes的注解(希望被扫描注解),然后add sci到context中,

      Context.startInternal时,会执行执行一次sci.onstartup(),参数是所有关联的被筛选的class集合。

  • 相关阅读:
    Jenkins的maven工程打包的时候怎么指定不同环境的配置文件
    杂记待整理
    zabbix监控网络的出入口流量
    MySQL的恢复脚本
    mysql 备份恢复图
    切割haproxy的日志
    zabbix 监控MySQL
    svn 的备份还原
    svn做目录访问控制(AuthzSVNAccessFile)
    MySQL多实例
  • 原文地址:https://www.cnblogs.com/luyi/p/4218825.html
Copyright © 2020-2023  润新知