我有2个webapps:
WebApp 2取决于WebApp 1
如果WebApp 1未运行,则WebApp 2将失败
我可以在tomcat中定义我总是希望webapp 1在webapp 2之前启动吗?
答案 0 :(得分:9)
根据Apache wiki(http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):
没有预期的启动订单。 既不是Servlet规范也不是Tomcat 定义一个。你不能依赖这些应用程序 从任何特定的顺序开始。
答案 1 :(得分:0)
确实,tomcat没有提供任何强制部署顺序的方法。
Tomcat按以下顺序部署webapp:
1.首先会部署任何上下文描述符。
2.将部署未被任何上下文描述符引用的爆炸Web应用程序。如果他们在appBase中有一个关联的.WAR文件,并且它比爆炸的Web应用程序更新,则会删除展开的目录,并从.WAR重新部署webapp
将部署3.WAR文件
这是一个建议的解决方案:
如果要指定部署顺序,请在$ CATALINA_BASE / conf / [enginename] / [hostname] /MyApp.xml
中为Web应用程序定义上下文Tomcat通过执行File listFiles()来扫描$ CATALINA_BASE / conf / [enginename] / [hostname] /,它返回按哈希值排序的File数组(取决于操作系统)。
您可以使用以下代码检查将部署Webapps的顺序
文件文件=新文件(“/ opt / tomcat / conf / Catalina / localhost”); File [] files = file.listFiles(); for(文件f:文件) { System.out.println(“文件名:”+ f.getName()); 强文
答案 2 :(得分:0)
Liferay似乎已经以一种可以实现这一目标的方式覆盖了HostConfig。基本思想是扩展HostConfig,然后覆盖deployApps或各个方法deployDescriptors,depoyWars和deployDirectories,以便按照您希望的方式对应用程序进行排序。然后通过将属性hostConfigClass添加到Host元素来修改Tomcat的conf / server.xml。