2009-10-01 3 views
10

に私は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によると

+3

この問題の回避策が見つかった場合はどうすればいいですか? –

+0

Tomcatが完全に終了するまでWebApp 1にリクエストが行われないようにすることができれば、最初に要求したWebApp 1の依存関係を遅らせるようにWebApp 2を再コードすることもできます。 –

+0

ハッピーな方法があります。 http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –

答えて

9

全く予想される起動順序はありません。 Servlet仕様もTomcatも は定義していません。特定の順序で開始するアプリ に頼ることはできません。

0

Tomcatは展開順序を強制する方法を提供していません。

1.Anyコンテキスト記述子が最初に展開されます:

は、Tomcatは、次の順序でWebアプリケーションをデプロイします。

2.コンテキスト記述子によって参照されていない展開されたWebアプリケーションがデプロイされます。彼らはのappBaseの関連する.WARファイルを持っており、それが爆発したWebアプリケーションよりも新しい場合、展開ディレクトリが削除され、Webアプリケーションが

展開されます.WAR

3.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()); 強いテキスト

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を参照してください。

関連する問題