例えばfoo-bar-1.1.2.warと呼ばれるwarファイルをTomcatにデプロイする場合、どのようにデプロイすることができますかwebapps/barに抽出され、そのURLルートは/ bar /...?
ここでの私の意図は、warappファイルをバージョン情報とともにwebappsサーバーに保持して、インストールされているバージョンを知っているが、アプリの以前のバージョンを上書きするようにすることです。
PSI Probe を使用してwarファイルを展開できました。これにより、Webアプリのターゲットコンテキストを指定できます。ただし、これは、warファイル名のバージョン情報が失われることを意味します。
Tomcatは常にwarファイルの内容を同じ名前のフォルダーに抽出します(warsをデプロイするように構成されている場合-デフォルトなど)。
任意のフォルダ名に抽出できます。したがって、foo.war
のコンテンツを手動でbar/
というフォルダーに解凍すると、単にWebアプリフォルダーにwarをドロップするのではなく、Webアプリケーションがロードされます。
ただし、アプリケーションのコンテキストルート要素をオーバーライドすることで、フォルダー/ warファイル名をまったく変更せずにアプリケーションのURLパターンを指定できるため、これはまったく不要です。
これは多くの場合、Tomcat server.xml
で設定されますが、その慣行はかなり推奨されていません。代わりに、Webアプリケーション/ WARファイルのMETA-INFフォルダーでcontext.xml
を使用することをお勧めします。
<Context path="/bar" .../>
アプリケーションをデプロイしたら、context.xml
を/conf/Catalina/localhost
にコピーする必要がありますが、foo.xml
に名前を変更する必要があります
Conextルートは一意である必要があり、autoDeploy
またはdeployOnStartup
操作を使用している場合は追加の考慮事項があることに注意してください(ソース http://Tomcat.Apache.org/Tomcat -7.0-doc/config/context.html )。
その他のオプションは次のとおりです。
foo-1.1.0
warをドロップします。foo/version1
また、Ant(または同等のツール)を使用してデプロイメントを自動化(および上記のいずれかを実行)することもできます。
コンテキストフラグメント定義のpath
属性について強調する重要なポイントがあります。 トピックに関するドキュメント を引用するには:
AutoDeployまたはdeployOnStartup操作がホストによって実行される場合、Webアプリケーションの名前とコンテキストパスは、Webアプリケーションを定義するファイルの名前から派生します。
deployOnStartup
はTomcatホストのデフォルトの動作です。
ドキュメントに従うには、これは非常に重要な結果をもたらします。
コンテキストパスを_
META-INF/context.xml
_で定義することはできません
Tomcatコンテキストの定義 の方法によると、これは2つのソリューションのみを許可します。
In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory
Inside a Host element in the main conf/server.xml
_。これは、サーバーを再起動する必要があるため、本番環境では推奨されないソリューションです別のソリューションは unpackWARs
属性 を利用します。
私の観点では、これらの理由から、本番環境で微妙なパスを実装する一般的で簡単な方法は、 naming のwarファイル(バージョン管理を含み、ソリューションになる可能性があるもの)を利用することですあなたの問題に)。 warファイル名の単一のシャープ(たとえばtest#path.war)は、コンテキストパス(たとえば/ test/path)。ダブルシャープはバージョン番号を示します(例:test#path ## 112.war)。これは、warファイルの展開、ホットデプロイの有無にかかわらず機能し、デプロイに依存せず(マネージャーまたはファイルシステム)、同じアーカイブの複数のバージョンを管理します。
ただし、アーカイブ名とは異なるパスを使用する必要がある場合、唯一の解決策は_/conf/[enginename]/[hostname]/
_ディレクトリまたは_server.xml
_ファイルの記述子であるようです。そのためには、サーバーファイルシステムへのアクセスが必要です。
関連するソリューションは、Tomcatの日常の設定および管理方法に大きく関連しています。
Warファイル名にバージョン情報を含めるだけの場合は、my-app##1.2.3.war
のように名前を付けることができます。ディレクトリmy-app##1.2.3
に展開されますが、コンテキストはmy-app
になります(つまり http:// Host/my-app / )。
少なくともTomcat 7.0.55で動作します