かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot + npm + Geb で入力フォームを作ってテストする ( その72 )( Windows で本番稼働させるためのディレクトリ作成、jar ファイル配置、bat ファイル作成、サービス登録、動作確認 )

概要

記事一覧はこちらです。

Spring Boot + npm + Geb で入力フォームを作ってテストする ( 番外編 )( gradle-processes を利用して Geb のテスト前に Spring Boot の Web アプリを自動起動する ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Windows で本番稼働させるためのディレクトリ作成、jar ファイル配置、bat ファイル作成、サービス登録、動作確認。

参照したサイト・書籍

目次

  1. application-product.properties に valueshelper.classpath.prefix の設定を追加する
  2. Windows で本番稼働させるためのディレクトリを作成する
  3. bat ファイルを作成する
  4. jar ファイルを作成、配置する
  5. nssm をダウンロード・配置し、Windows のサービスに登録する
  6. 動作確認
  7. Windows のサービスから削除する
  8. 次回は。。。

手順

application-product.properties に valueshelper.classpath.prefix の設定を追加する

ksbysample.webapp.bootnpmgeb.values.ValuesHelper クラスで使用する valueshelper.classpath.prefix の設定を記述するのを忘れていたので追加します。

src/main/resources/application-product.properties の以下の点を変更します。

..........

spring.mail.host=localhost
spring.mail.port=25

valueshelper.classpath.prefix=BOOT-INF.classes.
  • valueshelper.classpath.prefix=BOOT-INF.classes. を追加します。

Windows で本番稼働させるためのディレクトリを作成する

実行環境は以下のディレクトリ構成にします。ファイルは後から配置する ( ログファイルは後から作成される ) ので、まずは全てのディレクトリを作成します。

C:\webapps\boot-npm-geb-sample
├ bat
│ └ webapp_startup.bat
├ lib
│ └ boot-npm-geb-sample-1.0.1-RELEASE.jar
├ logs
│ ├ gc.log
│ ├ boot-npm-geb-sample.log
│ └ slow-query.log
├ nssm
│ └ nssm.exe
└ work

bat ファイルを作成する

C:\webapps\boot-npm-geb-sample\bat の下に webapp_startup.bat を新規作成し、以下の内容を記述します。

@echo on

setlocal
set JAVA_HOME=C:\Java\jdk1.8.0_172
set PATH=%JAVA_HOME%\bin;%PATH%
set WEBAPP_HOME=C:\webapps\boot-npm-geb-sample
set WEBAPP_JAR=boot-npm-geb-sample-1.0.1-RELEASE.jar
set LOGS_DIR=%WEBAPP_HOME%\logs
set PATH_HEAPDUMPFILE=%LOGS_DIR%\heapdump.hprof
set PATH_ERRORFILE=%LOGS_DIR%\hs_err.log

cd /d %WEBAPP_HOME%
java -server ^
     -Xms1024m -Xmx1024m ^
     -XX:MaxMetaspaceSize=384m ^
     -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled ^
     -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 ^
     -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark ^
     -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps ^
     -Xloggc:%WEBAPP_HOME%/logs/gc.log ^
     -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M ^
     -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%PATH_HEAPDUMPFILE% ^
     -XX:+CrashOnOutOfMemoryError ^
     -XX:ErrorFile=%PATH_ERRORFILE% ^
     -Dfile.encoding=UTF-8 ^
     -Djava.net.preferIPv4Stack=true ^
     -Dsun.net.inetaddr.ttl=100 ^
     -Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP ^
     -Dcom.sun.management.jmxremote ^
     -Dcom.sun.management.jmxremote.port=7900 ^
     -Dcom.sun.management.jmxremote.ssl=false ^
     -Dcom.sun.management.jmxremote.authenticate=false ^
     -Dspring.profiles.active=product ^
     -jar lib\%WEBAPP_JAR%

set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
set HHMMSS=%time:~0,8%
set HHMMSS=%HHMMSS::=%
set HHMMSS=%HHMMSS: =%
if exist %PATH_HEAPDUMPFILE% rename %PATH_HEAPDUMPFILE% heapdump_%YYYYMMDD%%HHMMSS%.hprof
if exist %PATH_ERRORFILE% rename %PATH_ERRORFILE% hs_err_%YYYYMMDD%%HHMMSS%.log

jar ファイルを作成、配置する

clean タスク → Rebuild Project → build タスクを実行します。build/libs の下に boot-npm-geb-sample-1.0.1-RELEASE.jar を作成されますので、C:\webapps\boot-npm-geb-sample\lib の下にコピーします。

nssm をダウンロード・配置し、Windows のサービスに登録する

https://nssm.cc/download のページ内の「Latest release」の「nssm 2.24」リンクをクリックして nssm-2.24.zip をダウンロードします。

nssm-2.24.zip を解凍します。解凍して作成された nssm-2.24\win64 ( 32bit環境の場合には nssm-2.24\win32 ) ディレクトリの下にある nssm.exe を C:\webapps\boot-npm-geb-sample\nssm の下に配置します。

コマンドプロンプトを「管理者として実行...」モードで起動し、以下のコマンドを実行します。

> cd /d C:\webapps\boot-npm-geb-sample\nssm
> nssm install boot-npm-geb-sample

「NSSM service installer」画面が表示されます。以下の画像の値を入力した後、「Install service」ボタンをクリックします。サービスの登録に成功すると「Service "ksbysample-webapp-lending" installed successfully!」のダイアログが表示されますので「OK」ボタンをクリックします。

f:id:ksby:20180726004542p:plain

動作確認

最初にメールを送信できるようにするため smtp4dev を起動します。

f:id:ksby:20180726004832p:plain

サービス画面を開きます。サービス一覧から「boot-npm-geb-sample」を選択し、「サービスの開始」リンクをクリックしてサービスを開始します。

f:id:ksby:20180726005233p:plain f:id:ksby:20180726005310p:plain

C:\webapps\boot-npm-geb-sample\logs の下の boot-npm-geb-sample.log をエディタで開き、最後に "Started Application in ..." のログが出力されていることを確認します。

以下の手順で動作確認します ( 画面キャプチャは省略します )。

  • ブラウザを起動して http://localhost:8080/inquiry/input/01/ にアクセスして入力画面1を表示します。
  • 入力画面1~3に入力して確認画面を表示します。
  • 確認画面から「修正する」ボタンをクリックして入力画面1~3に戻り、入力したデータが表示されること、データを修正して確認画面に戻った場合には修正したデータが反映されることを確認します。
  • 確認画面で「送信する」ボタンをクリックして、メールが送信されること、及び完了画面が表示されることを確認します。

Windows のサービスから削除する

サービスを削除します。管理者モードで起動しているコマンドプロンプトから以下のコマンドを実行します。

> nssm remove boot-npm-geb-sample

「Remove the service?」のダイアログが表示されますので、「はい」ボタンをクリックします。サービスが削除されると「Service "boot-npm-geb-sample" removed successfully!」のダイアログが表示されますので「OK」ボタンをクリックします。

次回は。。。

感想を書いた後、この Web アプリを Spring Boot 2 へバージョンアップして、終わりにする予定です。

履歴

2018/07/29
初版発行。