Spring BootをWindowsのTomcatで動かす方法をご紹介します。
目次
条件
- Spring Boot 2.1.4
- maven
- Windows 10 64bit
- java 1.8
前提
JDKがローカルPCにインストール済み&パスが設定済みであるとします。
事前準備
Tomcatのダウンロード
以下のサイトから、Tomcat 9をダウンロードします。
https://tomcat.apache.org/download-90.cgi
「64-bit Windows zip」を選択します。
ダウンロードしたzipを任意のディレクトリに解凍します。
今回は以下に解凍しました。
- C:\apache-tomcat-9.0.19
環境変数の設定
コントロール パネル > システムとセキュリティ > システム > システムの詳細設定 を選択してシステムのプロパティ画面を開きます。
詳細設定タブの環境変数ボタンを押します。
環境変数画面が開きます。
今回はユーザー環境変数に追加します。
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に出力されます。
ここでは、以下のディレクトリの下に出力されました。
- C:\apache-tomcat-9.0.19\logs
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>
ポイント
- warでパッケージされるようにします。
- finalNameでwarのファイル名を指定します。
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ディレクトリにコピーします。
- C:\apache-tomcat-9.0.19\webapps
Tomcatを起動します。
springboot.warが展開され、springbootディレクトリが作成されます。
ブラウザで以下のURLを指定します。
http://localhost:8080/springboot/hello
ポイント
localhost:8080/{warファイル名}/* を指定します。
想定通りの表示になればOKです。
参考
Apache Tomcat
https://tomcat.apache.org/download-90.cgi