どのように伝えることができますか? Tomcatは、WARファイルを指定したときに特定のコンテキストパスを使用しますか?
例:Mavenビルドによって作成されたwarファイルがあり、結果のファイル名はかなり長いです。そのため、Tomcatマネージャーアプリケーションがwarのファイル名をコンテキストとして使用しないようにします。
META-INFでcontext.xmlを指定しても、目的の結果が得られませんでした
path
のContext
属性のドキュメントでもこれを見つけました。
このフィールドの値は、.xmlコンテキストファイルまたはdocBaseに使用されるファイル名から推測されるため、server.xmlでコンテキストを静的に定義する場合を除き、設定しないでください。
そのため、アプリケーションサーバーにWARのパスがどうあるべきかを伝える正しい方法ではないようです。
他にヒントはありますか?
Context Container のドキュメントには2つの重要なポイントがあります。
$CATALINA_BASE/conf/[enginename]/[hostname]/
ディレクトリ内の個々のファイル(拡張子「.xml」)。 ファイルの名前(.xml拡張子を除く)がコンテキストパスとして使用されます。マルチレベルのコンテキストパスは、#を使用して定義できます。/foo/barのコンテキストパスの場合はfoo#bar.xml。デフォルトのWebアプリケーションは、ROOT.xmlというファイルを使用して定義できます。$CATALINA_BASE/conf/[enginename]/[hostname]/
内のアプリケーションのコンテキストファイルが存在しない場合のみ、アプリケーションファイル内の/META-INF/context.xml
にある個々のファイル。 WebアプリケーションがWARとしてパッケージ化されている場合、/META-INF/context.xml
は$CATALINA_BASE/conf/[enginename]/[hostname]/
にコピーされ、アプリケーションのコンテキストパスに一致するように名前が変更されます 。このファイルが存在する場合、新しい/META-INF/context.xml
を持つ新しいWARがホストのappBaseに配置されても、このファイルは置き換えられません。
したがって、META-INF/context.xml
をバンドルすると、ファイルの名前がWARの名前に変更され、path
要素で定義されているContext
に関係なく、この名前がコンテキストパスになります。
したがって、ここには2つのオプションがあります。
生成されたwarの名前を短い名前に設定します(推奨されない<finalName>
over <warName>
を使用することをお勧めします):
<project>
...
<build>
<finalName>mycontext</finalName>
...
</build>
...
</project>
または、デプロイメントに maven-Tomcat-plugin
を使用し、プラグイン構成でコンテキストパスを設定します。
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>Tomcat-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<path>/mycontext</path>
</configuration>
</plugin>
...
</plugins>
...
</build>
...
</project>
Warファイル名を保持し、コンテキストパスを選択する簡単なソリューションを見つけました。
ホストのappBase
の外部に戦争を展開し、appBase
ディレクトリ内にリンクを作成する必要があります。
例:
ln -sf ${CATALINA_HOME}/wars/myapp-0.0.8-SNAPSHOT.war ${CATALINA_HOME}/webapps/myapp.war
エクトル
<Context>
の- META-INF/context.xml
要素のpath
属性を設定できます。
または、mavenを設定して、カスタム名でwarアーティファクトを作成できます。
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<warName>yourCustomWarName</warName>
</configuration>
</plugin>
........
</plugins>
</build>
プロジェクトにはMETA-INFフォルダーがあり、そのフォルダーにはcontext.xmlファイルがあります。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/myproject" />