Java web片段和web.xml中servlet侦听器的执行顺序

Java web片段和web.xml中servlet侦听器的执行顺序,java,servlets,servlet-3.0,Java,Servlets,Servlet 3.0,有没有办法指定web.xml和web-fragment.xml中定义的ServletContextListeners的执行顺序 我的应用程序中有两个侦听器: 第一个在web-fragment.xml中声明 <listener> <listener-class>com.example.RunFirst</listener-class> </listener> com.example.RunFirst 还有我的应用程序的web.xml中的第二

有没有办法指定web.xml和web-fragment.xml中定义的ServletContextListeners的执行顺序

我的应用程序中有两个侦听器: 第一个在web-fragment.xml中声明

<listener>
  <listener-class>com.example.RunFirst</listener-class>
</listener>

com.example.RunFirst
还有我的应用程序的web.xml中的第二个

<listener>
  <listener-class>com.example.RunSecond</listener-class>
</listener>

com.example.RunSecond
此外,我的web片段还包含以下排序元素:

<ordering>
  <before>
    <others />
  </before>
</ordering>


但是RunSecond仍然在RunFirst之前执行。你知道我怎样才能改变这个顺序吗?

实际上根本不可能

正如oracle文档中所述:“始终首先处理web.xml描述符。”

您可以使用RunSecond侦听器创建另一个web-fragment.xml,并使用“排序”设置片段之间的相对顺序


希望能有所帮助。

您的web.xml中的侦听器是按什么顺序定义的?RunFirst侦听器仅在我的片段的web-fragment.xml中定义,您在web.xml的哪个部分添加此web片段?我没有在我的web.xml中添加片段(顺便说一句:我不知道这是可能的)。我刚刚在jar的META-INF中添加了web-fragments.xml,监听器就被执行了。遗憾的是太晚了。好吧,web.xml中描述的过滤器和侦听器将按照它们出现的顺序加载和应用。从中,似乎您只能确定web片段的处理顺序,但web.xml和web-fragment.xml中配置的元素的处理顺序是特定于供应商的。