normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

WebApps の Web ジョブで Java アプリを稼働させる

WebApps には簡易な定期処理を実行することができる Web ジョブと呼ばれる機能が提供されており、Web ジョブでバックグラウンド タスクを実行するバッチ処理の実行方法が記載されているが、今回は Java アプリケーションを実行する方法を紹介する。

前提知識として、Web ジョブ自体は WebApps のインスタンス上で動作するため、WebApps にバンドルされている実行ファイル( 今回紹介する Java とか )は利用可能だ。2015年8月現在では WebApps には以下の JDK がインストールされている。
f:id:waritohutsu:20150818165625p:plain

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
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 ジョブ専用の領域で実行されていることがわかる。

まとめ

  • Web ジョブで Java は利用できるが、jar を自分でまとめて放り込む必要あり
  • .NET 違って Web ジョブの SDK はない