Tim*_*dze 37 java servlets servletcontextlistener
如何在应用程序初始化时定义ServletContextListener执行的顺序,如果我有多个ServletContextListener,其中一些在部署描述符中声明,另一些在注释(@WebListener)中声明?
Deb*_*kia 70
如果要以特定顺序执行侦听器,则应使用部署描述符来定义它们.
以下语句是从Servlet规范中复制的:
8.2.3:
如果调用侦听器,servlet,过滤器的顺序对应用程序很重要,则必须使用部署描述符.使用注释定义侦听器,servlet和过滤器时,未指定调用它们的顺序.
排序将基于它们在描述符中定义的顺序以及在
web.xml或中的排序元素中的绝对排序元素web-fragment.xml.在此版本发布之前(Java™Servlet规范,版本3),以随机顺序调用上下文侦听器.从Servlet 3.0开始,将按照在web.xml中声明它们的顺序调用侦听器.
实现的方法按其声明的顺序在
javax.servlet.ServletContextListener它们的contextInitialized方法中调用,并以contextDestroyed相反的顺序在它们的方法中调用.
如果您有多个ServletContextListener,其中一些在部署描述符中声明,而另一些在注释中声明,则其中定义的侦听器web.xml将获得优先级.下面的语句是从servlet规范的相同部分(8.2.3)复制的:
主web.xml或Web片段中指定的配置优先于通过注释指定的配置.
您似乎知道执行的顺序,但是您想知道如果在部署描述符中声明了一些侦听器,并且某些侦听器使用注释,那么它将是什么,因此首选项由部署描述符和注释进行.
请注意,将按部署描述符然后注释的顺序首先调用所有侦听器的构造函数,然后按相同的顺序调用生命周期方法.
| 归档时间: |
|
| 查看次数: |
14659 次 |
| 最近记录: |