【问题标题】:Module and Version in GAE/J CronGAE/J Cron 中的模块和版本
【发布时间】:2015-04-08 23:13:03
【问题描述】:
如何在 GAE/J cron 中同时指定模块和版本?
我阅读了this 页面。
目标字符串附加在您应用的主机名之前。
它通常是模块的名称。
cron 作业将被路由到命名模块的默认版本。
请注意,如果模块的默认版本发生更改,
该作业将以新的默认版本运行。
如果没有名称为分配目标的模块,
该名称被假定为一个应用版本,并且 App Engine 将尝试
将作业路由到该版本。请参阅关于 appengine-web.xml
我的理解是<target>中可以指定模块名称或版本,但我想同时指定模块名称和版本。
我该怎么做?
【问题讨论】:
标签:
google-app-engine
cron
【解决方案1】:
为了实现您的目标,您需要查找两个文件(appengine-web.xml、cron.xml),正如您已经说过的,您的 cron.xml 的目标标签将允许您设置模块或版本名称,所以为了能够做你需要的,你可以在appengine-web.xml中设置应用名称和模块版本,然后你可以在你的cron.xml的target标签中定义模块名称。
App Engine Java 应用程序的 WAR 中必须有一个名为 appengine-web.xml 的文件,该文件位于 WEB-INF 目录中。这是一个根元素为<appengine-web-app> 的XML 文件。指定应用程序 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>
希望对你有帮助
【解决方案2】:
如果您以这样的格式指定目标,您将实现您的目标:“version-dot-module”
这对我有用:
<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 - 我的模块名称