記事ディレクトリ
warパッケージを外部のTomcatコンテナにデプロイします
1.パッケージ方法を変更します
<packaging>war</packaging>
次のように、上記のコードをpom.xmlファイルの先頭に追加します。
2.組み込みのTomcat依存関係を除外します
外部のTomcatを使用し、組み込みの組み込みTomcatの関連するjarを当然除外します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3.新しいクラスを追加してSpringBootServletInitializerを継承し、configureを実装します。
このクラスを継承する理由、SpringBootServletInitializerソースコードコメント:
WebApplicationInitializerは、warファイルをビルドしてデプロイする場合にのみ必要であることに注意してください。組み込み
Webサーバーを実行する場合は、これはまったく必要ありません。
WARファイルを作成してデプロイする場合は、WebApplicationInitializerが必要です。組み込みのWebサーバーを実行したい場合は、これはまったく必要ありません。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//此处的Application.class为带有@SpringBootApplication注解的启动类
return builder.sources(BootLaunchApplication.class);
}
}
注:
外部Tomcatを使用してデプロイおよびアクセスする場合、application.properties(またはapplication.yml)の次の構成は無効になります。アクセスするには、tomcatのwebappsの下にある外部tomcatポートとプロジェクト名を使用してください。
server.port=
server.servlet.context-path=
4.ビルドにはfinalNameタグが必要です
pom.xmlのビルドコードセグメントには、アプリケーションの最終ビルドパッケージの名前が必要です。
<finalName>boot-launch</finalName>
5.パッケージ化と実行
warパッケージはパッケージ化されており、パッケージ化された結果はプロジェクトのターゲットディレクトリに保存されます。
mvn clean package -Dmaven.test.skip=true
次に、warパッケージを外部のTomcatwebappsディレクトリにコピーします。外部のTomcatで実行します。${Tomcat_home}/ bin /ディレクトリでstartup.bat(windows)またはstartup.sh(linux)を実行し、ブラウザーからアプリケーションにアクセスして効果をテストします。
知っておく必要があります
- tomcatwebappsディレクトリのboot-launch.warをboot-launchフォルダーに解凍します。
http://localhost:8888/boot-launch/template/jsp
したがって、アプリケーションにアクセスするときは、次ではなく、を使用する必要がありますhttp://localhost:8888/template/jsp
。404エラーが報告されます。 - jsp静的リソース参照も次のようにする必要があります:/image/xxxx.pngではなく/boot-launch/image/xxxx.png
- JSPのwarパッケージでは、webjarのリソース使用はサポートされなくなりました