このチュートリアルでは、Google App Engine(Java用)でスケジューラタスクまたはcronジョブを作成する方法を説明します。 GAEでは、cronジョブはHTTP GETリクエストを使用してURLを呼び出しますが、cronジョブの実行時間は最大10分に制限されています。

GAEでcronジョブを作成するには、ファイル ”

cron.xml

“にcronジョブを定義し、 ”

WEB-INF

“フォルダに入れるだけです。

Cron Jobチュートリアル

次に、GAEでcronジョブを作成し、

Spring MVC RESTの例

からURLを呼び出します。

  1. Google App Engine Java SDK 1.6.3.1

  2. Spring 3.1.1

  3. JDK 1.6

  4. Eclipse 3.7 + Google Plugin for Eclipse

1.スプリングコントローラ

簡単なSpring RESTコントローラ。

package com.mkyong.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/cron")
public class CronController {

    static int total = 0;

    @RequestMapping(value="/count", method = RequestMethod.GET)
    public String getCount(ModelMap model) {

        model.addAttribute("total", total);

        return "list";

    }

       //cron job running this
    @RequestMapping(value="/addCount/{num}", method = RequestMethod.GET)
    public String addCount(@PathVariable int num, ModelMap model) {

        total += num;
        model.addAttribute("total", total);

        return "list";

    }

}


File:list.jsp

– 合計カウントを表示するページ。

<html>
<body>
    <h1>GAE + Spring 3 MVC REST + CRON Example</h1>

    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-2836379775501347"
     data-ad-slot="8821506761"
     data-ad-format="auto"
     data-ad-region="mkyongregion"></ins>
<script>
(adsbygoogle = window.adsbygoogle ||[]).push({});
</script><h2>Counts : ${total} </h2>

</body>
</html>

2. cron.xml



cron.xml

“を作成し、 ”

WEB-INF

“フォルダに入れてください。このcronジョブは、URL「

/cron/addCount/1

」を1分ごとに呼び出します。


File:cron.xml

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/cron/addCount/1</url>
    <description>Add count + 1 every 1 minutes</description>
    <schedule>every 1 minutes</schedule>
  </cron>
</cronentries>

every N (hours|mins|minutes)["from" (time) "to" (time)]....

===  3.出力

GAEにデプロイすると、アプリケーション管理者ページでcronジョブの状態を表示できます。

画像://wp-content/uploads/2012/05/gae-cron-example1.png[gae cron example、title = "gae-cron-example1"、width = 640、height = 212]

__URL:http://mkyong-springmvc-cron.appspot.com/cron/count__、1分後の結果

image://wp-content/uploads/2012/05/gae-cron-example2.png[cron job on gae、title = "gae-cron-example2"、width = 640、height = 322]

=== ソースコードをダウンロードする

ファイルサイズが大きいため、すべてのSpringおよびGAE jarは除外されます。

ダウンロード:link://wp-content/uploads/2012/05/CronJob-GoogleAppEngine-Example.zip[CronJob-GoogleAppEngine-Example.zip](13 KB)

=== 参考文献

.  https://developers.google.com/appengine/docs/java/config/cron[Cronジョブ

on GAE for Java]。 link://google-app-engine/google-app-engine-spring-3-mvc-rest-example/[Google

App Engine + Spring MVC RESTの例]

link://tag/cron/[cron]link://tag/gae/[gae]link://tag/scheduler/[scheduler]