ホームページ Java &#&チュートリアル SpringBoot を war パッケージにパッケージ化して Tomcat または wildfly で実行する方法

SpringBoot を war パッケージにパッケージ化して Tomcat または wildfly で実行する方法

May 10, 2023 pm 05:04 PM
tomcat springboot war

springboot のデフォルトのパッケージ化方法は jar パッケージです。jar パッケージの利点は、設定を変更する必要がないことと、tomcat が埋め込まれていることです。jar パッケージにパッケージ化されている場合は、直接 docker に放り込むことができますテストを実行します。ただし、フロントエンド コードは war パッケージにのみパッケージ化できることを考慮すると、バックエンド コードを war パッケージにパッケージ化して、Tomcat コンテナ内の Web アプリでフロントエンド コードと一緒に実行するだけで十分です。

SpringBoot パッケージ形式

デフォルトでは、作成された SpringBoot プロジェクトは jar パッケージ形式でパッケージ化されます。同時に、Tomcat コンテナーが組み込まれています。

では、springboot を war パッケージにパッケージ化して、wildfly などのコンテナーにデプロイしたい場合は、どうすればよいでしょうか?

以下、プロジェクトの作成から順に説明していきます。

プロジェクトの作成

プロジェクトの作成に難しいことはありません。アイデア ツールを使用して簡単な Maven プロジェクトを作成するだけです。プロジェクトが既に Springboot プロジェクトである場合は、それを変更したい場合は、war パッケージの形式になっているので、比較して変更するだけです。

pom.xml 構成の変更

プロジェクトの作成後、pom.xml ファイルを変更し、親タグを追加します。

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.5.RELEASE</version>
  <relativePath/>
</parent>
ログイン後にコピー

元々が springboot プロジェクトだった場合は、すでに組み込まれているため、変更する必要はありません。

pom.xml のパッケージ化メソッドを war に設定します。

<packaging>war</packaging>

次のように依存関係構成を追加または変更します。

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <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>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>
ログイン後にコピー

spring-boot- starter - Tomcat への依存関係を Web から除外する必要があります。同時にservlet-apiの依存関係を追加します。ここで追加される依存関係は Servlet2.5 であることに注意してください。

パッケージ化にはビルドで次のプラグインを使用します。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
      </configuration>
    </plugin>
  </plugins>
</build>
ログイン後にコピー

メイン メソッドの開始

開始するメイン メソッドが既にある場合は、メイン メソッドに SpringBootServletInitializer を継承させ、そのメソッドを実装します。新規作成プロジェクトの場合は、以下のようにしてSpringBootApp(スタートアップクラス)を最上位ディレクトリに直接作成し、diamを起動します。

@SpringBootApplication
public class SpringBootApp extends SpringBootServletInitializer {
 public static void main(String[] args) {
 SpringApplication.run(SpringBootApp.class, args);
 }
 @Override
 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
 return builder.sources(SpringBootApp.class);
 }
}
ログイン後にコピー

Packaging

maven コマンドでパッケージのパッケージ化を実行するだけで、ターゲット ディレクトリに war パッケージが生成されます。

Tomcat と Wildfly のデプロイメントに関しては、対応するディレクトリに war パッケージを配置してサービスを開始できます。

例外

起動中に次のような例外が発生した場合 (web.xml が見つからないというプロンプトが表示されます):

WAR のアセンブル中にエラーが発生しました: webxml属性が必要です (更新モードで実行している場合は既存の WEB-INF/web.xml)

pom ファイル パッケージ化プラグインと Tomcat の問題が解決されているかどうかを確認し、上記の条件が満たされているかどうかを確認してください。プラグインのパッケージ化は正しいです。

問題の理由は、依存関係パッケージ spring-boot-starter-web が springboot プロジェクトで参照されていることです。このパッケージで参照されている spring-boot-starter-tomcat には、Tomcat 埋め込みサーブレット コンテナーが含まれており、その異なるバージョンは異なるサーブレット バージョン仕様を実装します。

サーブレット/JSP バージョン 2.5/2.1 は Tomcat バージョン 6.0.x をサポートしており、Java の最小バージョンは 1.5 です。サーブレット/JSP バージョン 3.0/2.2 は Tomcat バージョン 7.0.x をサポートし、Java の最小バージョンは 1.6 です。

上記ではServlet2.5を使用しているため、web.xmlファイルが存在しない場合には上記の例外が発生します。

解決策 1: サーブレットのバージョンが 3 未満の場合、/src/main/webapp/WEB-INF/web.xml ファイルを使用して作成します。

解決策 2: pom.xml のビルドの下に maven-war-plugin プラグインを追加します。そして、failOnMissingWebXml を false に設定します。

以上がSpringBoot を war パッケージにパッケージ化して Tomcat または wildfly で実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat に jar プロジェクトをデプロイする方法 Tomcat に jar プロジェクトをデプロイする方法 Apr 21, 2024 am 07:27 AM

JAR プロジェクトを Tomcat にデプロイするには、次の手順に従います。 Tomcat をダウンロードして解凍します。 server.xml ファイルを構成し、ポートとプロジェクトのデプロイメント・パスを設定します。 JAR ファイルを指定されたデプロイメント パスにコピーします。 Tomcatを起動します。指定された URL を使用して、デプロイされたプロジェクトにアクセスします。

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

Tomcatのインストールディレクトリはどこにありますか? Tomcatのインストールディレクトリはどこにありますか? Apr 21, 2024 am 07:48 AM

Tomcat インストール ディレクトリ: デフォルト パス: Windows: C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9 カスタム パス: インストール中に指定できます。インストール ディレクトリを見つけます。whereis またはlocateコマンドを使用します。

Tomcat で複数のプロジェクトをデプロイする方法 Tomcat で複数のプロジェクトをデプロイする方法 Apr 21, 2024 am 09:33 AM

Tomcat を介して複数のプロジェクトをデプロイするには、プロジェクトごとに webapp ディレクトリを作成してから、次の操作を行う必要があります。 自動デプロイ: webapp ディレクトリを Tomcat の webapps ディレクトリに配置します。手動デプロイメント: Tomcat のマネージャー アプリケーションにプロジェクトを手動でデプロイします。プロジェクトがデプロイされると、そのデプロイメント名 (例: http://localhost:8080/project1) でアクセスできるようになります。

Tomcatでの同時接続数を確認する方法 Tomcatでの同時接続数を確認する方法 Apr 21, 2024 am 08:12 AM

Tomcat の同時接続数を確認する方法: Tomcat Manager ページ (http://localhost:8080/manager/html) にアクセスし、ユーザー名とパスワードを入力します。左側のナビゲーション バーで [ステータス] -> [セッション] をクリックすると、ページの上部に同時接続数が表示されます。

Tomcat Web サイトのルート ディレクトリはどこですか? Tomcat Web サイトのルート ディレクトリはどこですか? Apr 21, 2024 am 09:27 AM

Tomcat Web サイトのルート ディレクトリは Tomcat の webapps サブディレクトリにあり、Web アプリケーション ファイル、静的リソース、および WEB-INF ディレクトリを保存するために使用されます。これは、Tomcat 構成ファイルで docBase 属性を検索することで見つかります。

Tomcatのポート番号を確認する方法 Tomcatのポート番号を確認する方法 Apr 21, 2024 am 08:00 AM

Tomcat のポート番号は、server.xml ファイルの <Connector> 要素の port 属性を確認することで確認できます。 Tomcat 管理インターフェイス (http://localhost:8080/manager/html) にアクセスし、[ステータス] タブを表示します。コマンドラインから「catalina.sh version」を実行し、「Port:」行を確認します。

Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Apr 21, 2024 am 09:00 AM

Tomcat サーバー上で異なるポート番号を使用してプロジェクトを実行するには、次の手順が必要です。server.xml ファイルを変更し、Connector 要素を追加してポート番号を定義します。 Context 要素を追加して、ポート番号に関連付けられたアプリケーションを定義します。 WAR ファイルを作成し、対応するディレクトリ (webapps または webapps/ROOT) にデプロイします。 Tomcat を再起動して変更を適用します。

See all articles