Servlets ServletContextListener针对不同战争的执行顺序

Servlets ServletContextListener针对不同战争的执行顺序,servlets,war,servletcontextlistener,Servlets,War,Servletcontextlistener,是否可以控制ServletContextListener在不同战争中的执行顺序 假设web服务中有3个独立的模块A、B和C。它们可以按任何顺序初始化,并且不会产生任何后果。但是,如果存在可选模块D,则需要首先对其进行初始化,并且可能会影响其他模块。这种配置是否可以通过Spring实现?我想到的唯一一件事是拥有一个全局ServletContextListener,它可以轮询类路径上是否存在每个模块的init类,但该解决方案看起来相当混乱。您可以在web-fragment.xml或web.xml中定

是否可以控制ServletContextListener在不同战争中的执行顺序


假设web服务中有3个独立的模块A、B和C。它们可以按任何顺序初始化,并且不会产生任何后果。但是,如果存在可选模块D,则需要首先对其进行初始化,并且可能会影响其他模块。这种配置是否可以通过Spring实现?我想到的唯一一件事是拥有一个全局ServletContextListener,它可以轮询类路径上是否存在每个模块的init类,但该解决方案看起来相当混乱。

您可以在web-fragment.xml或web.xml中定义顺序。请参阅以下链接以了解更多信息

当所有WAR都捆绑在EAR中时,可以管理应用程序的启动。它可以通过在
application.xmkl
中添加
true
来完成

如果所有的战争都是独立的,那么就没有标准的方式。但是,有一些特定于容器的特性允许您这样做

参考文献:

<web-app>
...
    <absolute-ordering>
      <name>A</name>
      <others/>
      <name>B</name>
    <absolute-ordering>
</web-app> 
如果要定义应用程序的servlet之间的依赖关系。 您可以在web.xml中定义
绝对排序,或在web fragment.xml中定义
相对排序

以下是绝对排序的工作原理:

<web-app>
...
    <absolute-ordering>
      <name>A</name>
      <others/>
      <name>B</name>
    <absolute-ordering>
</web-app> 

...
A.
B
如果web.xml中没有绝对顺序,容器将在web-fragment.xml中查找相对顺序。它看起来像这样:

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

我没有时间进一步研究这个问题,但我认为web-fragment.xml需要将所有模块添加到一些超级war中。如果我错了,请纠正我。我试图完成的是部署4场彼此不明确知道的独立战争。