Java 如何确定web.xml中侦听器的顺序

Java 如何确定web.xml中侦听器的顺序,java,servlets,jakarta-ee,Java,Servlets,Jakarta Ee,我在JavaWebApp中获得了一组servlet上下文侦听器,每个侦听器都收集了一些有关环境的信息 其中一些依赖于另一个听众收集的信息。但是我不能确定注册和调用侦听器的顺序,所以我必须复制代码 我知道侦听器是按照其在web.xml中的顺序注册的,但这听起来有点模糊,太模糊了,无法依赖它 你有没有提示我如何解决我的问题?看起来你可以创建一个ListenerManager,将其作为你唯一的侦听器,并让它包含其他侦听器。当事件发生时,只需按照您需要的顺序(可能是您在ListenerManager的构

我在JavaWebApp中获得了一组servlet上下文侦听器,每个侦听器都收集了一些有关环境的信息

其中一些依赖于另一个听众收集的信息。但是我不能确定注册和调用侦听器的顺序,所以我必须复制代码

我知道侦听器是按照其在web.xml中的顺序注册的,但这听起来有点模糊,太模糊了,无法依赖它


你有没有提示我如何解决我的问题?

看起来你可以创建一个ListenerManager,将其作为你唯一的侦听器,并让它包含其他侦听器。当事件发生时,只需按照您需要的顺序(可能是您在ListenerManager的构造函数中创建它们的顺序)调用其他每个侦听器


不幸的是,这意味着在添加侦听器时会发生代码更改,但您可以通过巧妙地使用属性文件和从类名代码创建来避免这种情况。

为什么这么模糊?web.xml中的顺序非常明确,它们的调用顺序在Java EE规范中有非常明确的规定。完全可以依赖它。

所有servlet容器和Java EE容器都严格实现规范的这一部分。您可以依赖这样一个事实:侦听器是按照您在web.xml中指定的顺序调用的

您可以有一个应用程序级数据结构(HashMap),当每个过滤器/侦听器遇到来自请求的数据时,它将被更新。这将使每个侦听器只更新必要的内容。您可以将公共代码放在基本侦听器中,这样就不会有代码重复