2014年1月4日土曜日

[GAE/J] Cronがon time failedになる

Google App EngineのCronサービスを使いたくて公式のドキュメントを見たのですが、
どうもダメそうなので試行錯誤してみました。

今回は、appspot.com/cron/backupをcronで動かすことにします。

まず、elipseプロジェクトにweb.xmlとcron.xmlを新規作成します。


cron.xmlを以下のように書きます。
以下の例は、/cron/backupを毎時間叩くように指定します。

cron.xml
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/cron/backup</url>
    <description>save contents every 1 hours</description>
    <schedule>every 1 hours</schedule>
    <timezone>Asia/Tokyo</timezone>
    <target>save</target>
  </cron>
</cronentries>
次に、web.xmlでルーティングの設定を以下のように書きます。
<servlet>と<servlet-mapping>は、servlet-nameでひもづけします。

web.xml 
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>Btools</servlet-name>
<servlet-class>jp.btools.backuperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Btools</servlet-name>
<url-pattern>/cron/backup</url-pattern>
</servlet-mapping>
<security-constraint>
       <web-resource-collection>
           <url-pattern>/cron/*</url-pattern>
       </web-resource-collection>
       <auth-constraint>
           <role-name>admin</role-name>
       </auth-constraint>
   </security-constraint>  
</web-app>
デプロイして確かめてみると、on time Failed

試行錯誤して、queue.xmlを新規作成します。













queue.xmlは今回使わないので<queue-entries>タグのみ追加。

queue.xml
<queue-entries>
</queue-entries>

デプロイして確かめてみると、on time Success
queue.xmlを追加したところ、cronが動くようになりました。

はて、cronを動かす為にはqueue.xmlが必要だったのでしょうか。

0 件のコメント:

コメントを投稿