WebApps には簡易な定期処理を実行することができる Web ジョブと呼ばれる機能が提供されており、Web ジョブでバックグラウンド タスクを実行する にバッチ処理の実行方法が記載されているが、今回は Java アプリケーションを実行する方法を紹介する。
前提知識として、Web ジョブ自体は WebApps のインスタンス上で動作するため、WebApps にバンドルされている実行ファイル( 今回紹介する Java とか )は利用可能だ。2015年8月現在では WebApps には以下の JDK がインストールされている。
Web ジョブ デプロイ用の zip ファイルの作成
上記のうち、こちらに対し、以下のディレクトリ構造を持つ zip ファイルを作成する。
run.zip └─bin │ run.bat │ └─com └─mydoman Main.class
こちらに格納した run.bat, Main.class の元となる Main.java はそれぞれ以下になる。
- run.bat
set JAVA_HOME=D:\Program Files\Java\jdk1.8.0_25 "%JAVA_HOME%"\bin\java com.mydoman.Main
- Main.java
package com.mydoman; import java.io.File; public class Main { public static void main(String[] args) { String path = new File(".").getAbsoluteFile().getParent(); System.out.println("current folder is " + path); } }
管理ポータルでのデプロイ
管理ポータルから作成済みの WebApps を選択し、設定から Web ジョブを選んで新規に作成する。この際に上記の zip ファイルを Web ジョブに格納し、オンデマンドで実行する。
実行後は管理ポータルでログを確認できるが、以下のような実行結果になっているはずだ。
[08/18/2015 06:00:31 > 5b618a: SYS INFO] Status changed to Initializing [08/18/2015 06:00:31 > 5b618a: SYS INFO] Run script 'run.bat' with script host - 'WindowsScriptHost' [08/18/2015 06:00:31 > 5b618a: SYS INFO] Status changed to Running [08/18/2015 06:00:31 > 5b618a: INFO] [08/18/2015 06:00:31 > 5b618a: INFO] D:\local\Temp\jobs\triggered\HelloJavaJob\wq4oddg2.nbr>set JAVA_HOME=D:\Program Files\Java\jdk1.8.0_25 [08/18/2015 06:00:31 > 5b618a: INFO] [08/18/2015 06:00:31 > 5b618a: INFO] D:\local\Temp\jobs\triggered\HelloJavaJob\wq4oddg2.nbr>"D:\Program Files\Java\jdk1.8.0_25"\bin\java com.mydoman.Main [08/18/2015 06:00:31 > 5b618a: INFO] current folder is D:\local\Temp\jobs\triggered\HelloJavaJob\wq4oddg2.nbr [08/18/2015 06:00:31 > 5b618a: SYS INFO] Status changed to Success
上記を確認すればわかるが、D ドライブの Web ジョブ専用の領域で実行されていることがわかる。