2009-10-01 51 views
10

我有2種的webapps:開始在Tomcat的webapps在一個確定的順序

的WebApp 2從Web應用程序1

取決於如果Web應用程序1沒有運行,Web應用程序2失敗

我可以在Tomcat中定義我總是希望webapp 1在webapp 2之前啓動?

+3

想知道是否已找到此問題的解決方法? – 2012-01-09 19:04:23

+0

如果您可以安排它,以便在Tomcat完成之前不會對WebApp 1發出任何請求,那麼可能需要重新編寫WebApp 2以便在首次請求時延遲加載它對WebApp 1的任何依賴關係。 – 2013-02-26 18:08:25

+0

這裏有一種怪異的方式。 見我的答案在這裏: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 – 2014-07-31 23:23:39

回答

0

確實,tomcat沒有提供任何方法來執行部署順序。

Tomcat的部署按照以下順序的webapps:

1.Any上下文描述符將會首先部署。

2.未被任何上下文描述符引用的爆炸式Web應用程序將被部署。如果他們在的appBase相關的.WAR文件,它比展開的Web應用程序更新,展開的目錄將被刪除,web應用程序將從.WAR

3.WAR文件重新部署將部署

這裏是一個建議的解決方案:

如果要指定部署順序再定義一個上下文在$ CATALINA_BASE/conf目錄/ [引擎]/[主機名] /MyApp.xml

您的Web應用程序

Tomcat通過執行File listFiles()來掃描$ CATALINA_BASE/conf/[enginename]/[hostname] /,它返回一個按哈希值排序的文件數組(依賴於操作系統)。

您可以使用下面的代碼,以檢查那些爲了web應用將被部署

檔案文件=新的文件(「/選擇/ tomcat的/ conf目錄/卡塔利娜/本地主機」); File [] files = file.listFiles(); (文件f:文件) { System.out.println(「Filename:」+ f.getName()); strong text

0

Liferay似乎已經以一種使得這一點成爲可能的方式覆蓋了HostConfig。其基本思想是擴展HostConfig,然後覆蓋deployApps或各個方法deployDescriptors,depoyWars和deployDirectories,按照您希望的方式對應用程序進行排序。然後通過將屬性hostConfigClass添加到主機元素來修改Tomcat的conf/server.xml。

有關詳細信息,請參閱http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java