に私は2つのwebappsにありますスタートwebappsには確定順
WebAppの2をWebAppの1が実行されていない場合はWebAppの1
から依存して、WebAppの2は
を失敗した私は、Tomcatでそれを定義することができます私はいつもwebapp 1がwebapp 2より前に開始したいと思っていますか? (http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27時)のApacheのwikiによると
に私は2つのwebappsにありますスタートwebappsには確定順
WebAppの2をWebAppの1が実行されていない場合はWebAppの1
から依存して、WebAppの2は
を失敗した私は、Tomcatでそれを定義することができます私はいつもwebapp 1がwebapp 2より前に開始したいと思っていますか? (http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27時)のApacheのwikiによると
:
全く予想される起動順序はありません。 Servlet仕様もTomcatも は定義していません。特定の順序で開始するアプリ に頼ることはできません。
Tomcatは展開順序を強制する方法を提供していません。
1.Anyコンテキスト記述子が最初に展開されます:
は、Tomcatは、次の順序でWebアプリケーションをデプロイします。
2.コンテキスト記述子によって参照されていない展開されたWebアプリケーションがデプロイされます。彼らはのappBaseの関連する.WARファイルを持っており、それが爆発したWebアプリケーションよりも新しい場合、展開ディレクトリが削除され、Webアプリケーションが
展開されます.WAR3.WARファイルから再デプロイされますここで
提案されたソリューションです:あなたは、展開の順序を指定したい場合は、$ CATALINA_BASE/confに/ [は、EngineName]/[ホスト名] /MyApp.xml
であなたのWebアプリケーションのコンテキストを定義
Tomcat $ CATALINA_BASE/conf/[enginename]/[hostname] /をスキャンして、ファイルlistFiles()を実行し、ハッシュ値でソートされたFile配列を返します(OSによって異なります)。
あなたは注文のWebアプリケーションが
ファイルファイル=新しいファイル(「は/ opt/tomcatに/ confに/カタリナ/ localhostの」)を展開される中で確認するには、次のコードを使用することができます。 File [] files = file.listFiles(); for(ファイルf:ファイル) { System.out.println( "ファイル名:" + f.getName()); 強いテキスト
Liferayは、これを可能にする方法で上書きされたHostConfigを持っているようです。基本的な考え方は、HostConfigを拡張し、deployAppsまたは個々のメソッドdeployDescriptors、depoyWars、deployDirectoriesのいずれかをオーバーライドして、必要な方法でアプリケーションをソートすることです。次に、HostConfigClass属性をHost要素に追加して、Tomcatのconf/server.xmlを変更します。
この問題の回避策が見つかった場合はどうすればいいですか? –
Tomcatが完全に終了するまでWebApp 1にリクエストが行われないようにすることができれば、最初に要求したWebApp 1の依存関係を遅らせるようにWebApp 2を再コードすることもできます。 –
ハッピーな方法があります。 http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –