以确定的顺序在tomcat中启动webapps

时间:2009-10-01 13:52:25

标签: tomcat web-applications server.xml

我有2个webapps:

WebApp 2取决于WebApp 1

如果WebApp 1未运行,则WebApp 2将失败

我可以在tomcat中定义我总是希望webapp 1在webapp 2之前启动吗?

3 个答案:

答案 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。

有关详细信息,请参阅http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java