我有2種的webapps:開始在Tomcat的webapps在一個確定的順序
的WebApp 2從Web應用程序1
取決於如果Web應用程序1沒有運行,Web應用程序2失敗
我可以在Tomcat中定義我總是希望webapp 1在webapp 2之前啓動?
我有2種的webapps:開始在Tomcat的webapps在一個確定的順序
的WebApp 2從Web應用程序1
取決於如果Web應用程序1沒有運行,Web應用程序2失敗
我可以在Tomcat中定義我總是希望webapp 1在webapp 2之前啓動?
根據Apache的維基(在http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):
,不存在預期啓動順序。 Servlet規範和Tomcat 都沒有定義一個。您無法依賴以任何特定順序開始的應用程序 。
確實,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
Liferay似乎已經以一種使得這一點成爲可能的方式覆蓋了HostConfig。其基本思想是擴展HostConfig,然後覆蓋deployApps或各個方法deployDescriptors,depoyWars和deployDirectories,按照您希望的方式對應用程序進行排序。然後通過將屬性hostConfigClass添加到主機元素來修改Tomcat的conf/server.xml。
想知道是否已找到此問題的解決方法? – 2012-01-09 19:04:23
如果您可以安排它,以便在Tomcat完成之前不會對WebApp 1發出任何請求,那麼可能需要重新編寫WebApp 2以便在首次請求時延遲加載它對WebApp 1的任何依賴關係。 – 2013-02-26 18:08:25
這裏有一種怪異的方式。 見我的答案在這裏: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 – 2014-07-31 23:23:39