GAE / J Cron中的模块和版本

时间:2015-02-09 08:58:34

标签: google-app-engine cron

如何在GAE / J cron中指定模块和版本?

我看了this页。

  

目标字符串会添加到您应用的主机名之前。   它通常是模块的名称。   cron作业将路由到指定模块的默认版本。   请注意,如果模块的默认版本发生更改,   该作业将以新的默认版本运行。

     

如果没有名为assigend的模块要定位,   该名称被假定为应用程序版本,App Engine将尝试   将作业路由到该版本。请参见关于appengine-web.xml

我的理解是,可以在<target>中指定模块名称或版本,但我想指定模块名称和版本。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

为了实现目标,您需要查找两个文件(appengine-web.xml,cron.xml),正如您已经说过的,cron.xml的目标标记将允许您设置模块或版本名称,为了能够做你需要的,你可以在appengine-web.xml中设置应用程序名称和模块版本,然后你可以在你的cron.xml的目标标签中定义模块名称。

App Engine Java应用程序必须在其WAR中的WEB-INF目录中有一个名为appengine-web.xml的文件。这是一个XML文件,其根元素为<appengine-web-app>。指定应用程序ID,版本标识符以及没有静态文件或资源文件的最小文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>_your_app_id_</application>
  <version>1</version>
  <threadsafe>true</threadsafe>
</appengine-web-app>

应用程序的WEB-INF目录中的cron.xml文件(以及appengine-web.xml)控制Java应用程序的cron。以下是cron.xml文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/weeklyreport</url>
    <description>Mail out a weekly report</description>
    <schedule>every monday 08:30</schedule>
    <timezone>America/New_York</timezone>
    <target>version-2</target>
  </cron>
</cronentries>

希望有所帮助

答案 1 :(得分:0)

如果您以这种格式指定目标,您将实现目标:&#34; version-dot-module&#34;

这对我有用:

<cron>
    <url>/cron/test-cron</url>
    <description>test-cron</description>
    <schedule>every 1 minutes synchronized</schedule>
    <target>v-5-1-dot-my-module-name</target>
</cron>

v-5-1 - 我的模块版本 my-module-name - 我的模块名称