10

我有 2 个网络应用程序:

WebApp 2 依赖于 WebApp 1

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

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

4

3 回答 3

9

根据 Apache wiki(在http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):

没有预期的启动顺序。Servlet 规范和 Tomcat 都没有定义一个。您不能依赖以任何特定顺序启动的应用程序。

于 2009-10-01T22:59:58.633 回答
0

确实,tomcat 没有提供任何强制部署顺序的方法。

Tomcat 按以下顺序部署 webapp:

1.将首先部署任何上下文描述符。

2.然后将部署未由任何上下文描述符引用的已爆炸 Web 应用程序。如果他们在 appBase 中有关联的 .WAR 文件并且它比展开的 Web 应用程序更新,则展开的目录将被删除并且 Web 应用程序将从 .WAR 重新部署

3.WAR文件将被部署

这是一个建议的解决方案:

如果您想指定部署顺序,请在 $CATALINA_BASE/conf/[enginename]/[hostname]/MyApp.xml 中为您的 Web 应用程序定义一个上下文

Tomcat 通过执行 File listFiles() 扫描 $CATALINA_BASE/conf/[enginename]/[hostname]/,它返回一个按哈希值排序的 File 数组(取决于操作系统)。

您可以使用以下代码检查 webapp 的部署顺序

File file = new File("/opt/tomcat/conf/Catalina/localhost"); 文件[] 文件 = file.listFiles(); for (文件 f : 文件) { System.out.println("文件名: " + f.getName()); 强文本

于 2014-10-13T08:52:55.993 回答
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

于 2014-12-03T17:29:57.457 回答