最近在一个decouple的项目中引入了web-fragment.xml,  遇到了一些问题,比较好玩,记录下。

web-fragment.xml 是servlet 3.0 以后引入的,它也是用来提供web部署描述的,功能上跟web.xml是一模一样的。不一样的地方是web-fragment.xml是在WEB-INF/lib/下的jar中。 想想就知道好处在哪里了,这样一来,多个模块的web部署就可以完全解耦了,一个模块的部署与卸载完全不用动整个appication的web.xml,做到了可插拔,想想还有点小激动呢, 先看看这个文件的位置:这是一个jar包的结构

web-fragment 中的执行顺序

web-fragment.xml的文件内容跟web.xml完全相同, 本文不想详述,请自行查阅。

我想主要描述的下web.xml和web-fragment.xml的执行顺序。

1. web.xml 总是第一个执行的

2. 多个web-fragement.xml 的执行顺序是可以配置的

请参考:https://www.roseindia.net/servlets/servlet3/webfragmentsOrdering.shtml

3. 强调下:web.xml 和 web-fragment.xml 完全是顺序执行的,举个例子

在部署描述中有几个耳熟能详的metadata,比如:“context-param”, “filter”, "servlet" 还有“listener”,他们的执行顺序是:

context-param --> listener --> filter --> servlet

那web.xml 和 web-fragment.xml中的执行顺序就是:

先执行web.xml中的context-param --> listener --> filter --> servlet, 完事以后再执行A web-fragment.xml中的这一串,然后是B fragment中的,想想这是好还是不好呢?我觉得这样会更好点,全局顺序按照metadata元素来,每个metadata的顺序再按照web.xml和fragment定义的顺序走。

所有context-param --> 所有listener --> 所有filter --> 所有servlet


你觉得呢?

相关文章:

  • 2022-12-23
  • 2021-07-18
  • 2021-08-09
  • 2021-12-24
  • 2021-11-11
  • 2022-01-15
  • 2021-11-27
猜你喜欢
  • 2022-01-06
  • 2021-06-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2021-07-22
相关资源
相似解决方案