サイトアイコン 知的好奇心

Spring BootをWindowsのTomcatで動かす方法

Spring BootをWindowsのTomcatで動かす方法をご紹介します。

条件

前提

JDKがローカルPCにインストール済み&パスが設定済みであるとします。

事前準備

Tomcatのダウンロード

以下のサイトから、Tomcat 9をダウンロードします。

https://tomcat.apache.org/download-90.cgi

「64-bit Windows zip」を選択します。

ダウンロードしたzipを任意のディレクトリに解凍します。
今回は以下に解凍しました。

環境変数の設定

コントロール パネル > システムとセキュリティ > システム > システムの詳細設定 を選択してシステムのプロパティ画面を開きます。
詳細設定タブの環境変数ボタンを押します。

環境変数画面が開きます。
今回はユーザー環境変数に追加します。

CATALINA_HOME

CATALINA_HOMEをTomcatのディレクトリに設定します。

JAVA_HOME

JAVA_HOMEをJDKのディレクトリに設定します。

 

環境変数の設定確認

コマンドプロンプトを開いて、以下のコマンドを実行します。

set CATALINA_HOME
set JAVA_HOME

指定したパスが表示されればOKです。

Tomcatの動作確認

コマンドプロンプトで、tomcatのbinディレクトリで以下のコマンドを実行します。

起動

C:\apache-tomcat-9.0.19\bin>startup.bat

停止

shutdown.bat

ログ出力

Tomcatのログは、logsディレクトリのcatalina.yyyy-mm-dd.logに出力されます。

ここでは、以下のディレクトリの下に出力されました。

12-May-2019 12:24:32.779 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Serverのバージョン名:Apache Tomcat/9.0.19
12-May-2019 12:24:32.784 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Server ビルド:          Apr 12 2019 14:22:48 UTC
12-May-2019 12:24:32.784 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log サーバーのバージョン番号:9.0.19.0
12-May-2019 12:24:32.785 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log OS 名:               Windows 10
12-May-2019 12:24:32.785 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log OS バージョン:            10.0
12-May-2019 12:24:32.785 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log アーキテクチャ:          amd64
12-May-2019 12:24:32.785 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Users\kmurata\jdk\jdk-12+33
12-May-2019 12:24:32.786 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM バージョン:           12+33
12-May-2019 12:24:32.786 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM ベンダ:            AdoptOpenJDK
12-May-2019 12:24:32.787 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\apache-tomcat-9.0.19
12-May-2019 12:24:32.787 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\apache-tomcat-9.0.19
12-May-2019 12:24:32.787 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:--add-opens=java.base/java.lang=ALL-UNNAMED
12-May-2019 12:24:32.788 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:--add-opens=java.base/java.io=ALL-UNNAMED
12-May-2019 12:24:32.788 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-May-2019 12:24:32.788 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Djava.util.logging.config.file=C:\apache-tomcat-9.0.19\conf\logging.properties
12-May-2019 12:24:32.789 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-May-2019 12:24:32.789 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Djdk.tls.ephemeralDHKeySize=2048
12-May-2019 12:24:32.789 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
12-May-2019 12:24:32.790 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Dignore.endorsed.dirs=
12-May-2019 12:24:32.790 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Dcatalina.base=C:\apache-tomcat-9.0.19
12-May-2019 12:24:32.791 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Dcatalina.home=C:\apache-tomcat-9.0.19
12-May-2019 12:24:32.791 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log コマンドライン引数:-Djava.io.tmpdir=C:\apache-tomcat-9.0.19\temp
12-May-2019 12:24:32.792 情報 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APRバージョン[1.6.5]を使用してAPRベースのApache Tomcatネイティブライブラリ[1.2.21]をロードしました。
12-May-2019 12:24:32.792 情報 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR機能:IPv6 [true]、sendfile true]、受け入れフィルタ[false]、ランダム[true]
12-May-2019 12:24:32.792 情報 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL設定:useAprConnector [false]、useOpenSSL [true]
12-May-2019 12:24:32.812 情報 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSLは[OpenSSL 1.1.1a  20 Nov 2018]を正常に初期化しました。
12-May-2019 12:24:32.861 情報 [main] org.apache.coyote.AbstractProtocol.init プロトコルハンドラ ["http-nio-8080"] を初期化します。
12-May-2019 12:24:33.057 情報 [main] org.apache.coyote.AbstractProtocol.init プロトコルハンドラ ["ajp-nio-8009"] を初期化します。
12-May-2019 12:24:33.064 情報 [main] org.apache.catalina.startup.Catalina.load サーバーの初期化 [745]ms
12-May-2019 12:24:33.108 情報 [main] org.apache.catalina.core.StandardService.startInternal サービス [Catalina] を起動します
12-May-2019 12:24:33.109 情報 [main] org.apache.catalina.core.StandardEngine.startInternal サーブレットエンジンの起動:[Apache Tomcat/9.0.19]
12-May-2019 12:24:33.119 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [C:\apache-tomcat-9.0.19\webapps\docs] を配備します
12-May-2019 12:24:33.487 警告 [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom セッション ID を生成するための SecureRandom インスタンスの作成に [142] ミリ秒かかりました。アルゴリズムは [142] です。
12-May-2019 12:24:33.508 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory ディレクトリ [C:\apache-tomcat-9.0.19\webapps\docs] の Web アプリケーションの配置は [390] ms で完了しました。
12-May-2019 12:24:33.510 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [C:\apache-tomcat-9.0.19\webapps\examples] を配備します
12-May-2019 12:24:34.047 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory ディレクトリ [C:\apache-tomcat-9.0.19\webapps\examples] の Web アプリケーションの配置は [537] ms で完了しました。
12-May-2019 12:24:34.047 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [C:\apache-tomcat-9.0.19\webapps\host-manager] を配備します
12-May-2019 12:24:34.098 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory ディレクトリ [C:\apache-tomcat-9.0.19\webapps\host-manager] の Web アプリケーションの配置は [51] ms で完了しました。
12-May-2019 12:24:34.099 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [C:\apache-tomcat-9.0.19\webapps\manager] を配備します
12-May-2019 12:24:34.138 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory ディレクトリ [C:\apache-tomcat-9.0.19\webapps\manager] の Web アプリケーションの配置は [40] ms で完了しました。
12-May-2019 12:24:34.139 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory Webアプリケーションディレクトリ [C:\apache-tomcat-9.0.19\webapps\ROOT] を配備します
12-May-2019 12:24:34.190 情報 [main] org.apache.catalina.startup.HostConfig.deployDirectory ディレクトリ [C:\apache-tomcat-9.0.19\webapps\ROOT] の Web アプリケーションの配置は [51] ms で完了しました。
12-May-2019 12:24:34.200 情報 [main] org.apache.coyote.AbstractProtocol.start プロトコルハンドラー ["http-nio-8080"] を開始しました。
12-May-2019 12:24:34.233 情報 [main] org.apache.coyote.AbstractProtocol.start プロトコルハンドラー ["ajp-nio-8009"] を開始しました。
12-May-2019 12:24:34.256 情報 [main] org.apache.catalina.startup.Catalina.start サーバーの起動 [1,191]ms
12-May-2019 12:24:54.279 情報 [main] org.apache.catalina.core.StandardServer.await 有効なシャットダウンコマンドがシャットダウンポート経由で受信されました。 サーバーインスタンスを停止します。
12-May-2019 12:24:54.280 情報 [main] org.apache.coyote.AbstractProtocol.pause ProtocolHandler ["http-nio-8080"] を一時停止します。
12-May-2019 12:24:54.416 情報 [main] org.apache.coyote.AbstractProtocol.pause ProtocolHandler ["ajp-nio-8009"] を一時停止します。
12-May-2019 12:24:54.546 情報 [main] org.apache.catalina.core.StandardService.stopInternal サービス [Catalina] を停止します
12-May-2019 12:24:54.567 情報 [main] org.apache.coyote.AbstractProtocol.stop ProtocolHandler ["http-nio-8080"]の停止中
12-May-2019 12:24:54.572 情報 [main] org.apache.coyote.AbstractProtocol.stop ProtocolHandler ["ajp-nio-8009"]の停止中
12-May-2019 12:24:54.576 情報 [main] org.apache.coyote.AbstractProtocol.destroy ProtocolHandler ["http-nio-8080"] を破棄します。
12-May-2019 12:24:54.578 情報 [main] org.apache.coyote.AbstractProtocol.destroy ProtocolHandler ["ajp-nio-8009"] を破棄します。

ブラウザで確認

http://localhost:8080/ をブラウザで開きます。

以下のように表示されればOKです。

Warファイル作成

Spring BootでWarファイルの作成を行います。

pom.xml

pom.xmlに以下を記述します。

<packaging>war</packaging>

<dependencies>
   ・・・
   
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
   </dependency>
</dependencies>

<build>
   ・・・
   
   <finalName>springboot</finalName>
</build>

ポイント

SpringBootServletInitializer

SpringBootServletInitializerを作成します。

ここでは、com.example.demoの下に、ServletInitializer.javaを以下のように作成しました。
packageとHelloApplication.classは、適宜変更してください。

package com.example.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(HelloApplication.class);
  }

}

war作成

対象プロジェクトを選択して右クリック > 実行 > Maven installを実行します。

以下のように、targetディレクトリの下にwarファイルなどが作成されます。

ちなみに、Maven cleanを実行すると、targetディレクトリの下のファイル一覧は削除されます。

Tomcatでの実行

作成したwarファイル(springboot.war)をTomcatのwebappsディレクトリにコピーします。

Tomcatを起動します。

springboot.warが展開され、springbootディレクトリが作成されます。

ブラウザで以下のURLを指定します。

http://localhost:8080/springboot/hello

ポイント

localhost:8080/{warファイル名}/* を指定します。

想定通りの表示になればOKです。

参考

Apache Tomcat

https://tomcat.apache.org/download-90.cgi

Spring BootでWARファイルを作成してTomcatへデプロイする方法

Spring BootでWARファイルを作成してTomcatへデプロイする方法

モバイルバージョンを終了