是否可以在不同的战争中控制ServletContextListener执行的顺序?
假设Web服务中有3个独立的独立模块A,B和C.它们可以按任何顺序初始化,并且没有任何后果。但是,如果存在可选模块D,则需要首先对其进行初始化,并可能影响其他模块。这种配置是否可以通过Spring实现?只有想到的是拥有一个全局ServletContextListener,它会轮询每个模块的init类是否存在于类路径上,但该解决方案看起来非常混乱。
答案 0 :(得分:1)
当所有WAR捆绑在EAR中时,可以管理应用程序的启动。可以通过在<initialize-in-order>true</initialize-in-order>
中添加application.xmkl
来完成。
如果所有WAR都是独立的,那么没有标准的方法。但是,有容器特定功能允许您这样做。
<强>参考文献:强>
如果要定义应用程序的servlet之间的依赖关系。
您可以定义Absolute ordering in web.xml
或relative ordering in web-fragment.xml
。
以下是绝对排序的工作原理:
<web-app>
...
<absolute-ordering>
<name>A</name>
<others/>
<name>B</name>
<absolute-ordering>
</web-app>
如果web.xml中没有绝对排序,容器将在web-fragment.xml中查找相对排序。它看起来像这样:
<ordering>
<before>
<others />
</before>
</ordering>
答案 1 :(得分:-1)
您可以在web-fragment.xml或web.xml中定义排序。请参阅以下链接以了解更多信息。 https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment