除了制作cron.xml之外,我还需要做些什么?

时间:2014-03-21 02:23:19

标签: java google-app-engine timer cron scheduler

除了制作用于计划的 cron.xml 文件之外,我还需要做什么?我得到了同样的例外:

java.security.AccessControlException: access denied 
("java.lang.RuntimePermission" "modifyThreadGroup")
正如我以前所做的那样。

这是我的 cron.xml

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
    <cron>
        <url>/tw</url>
        <description>Tweet every half an hour</description>
        <schedule>every 30 minutes from 8:00 to 17:00</schedule>
    </cron>
</cronentries>

/tw是具有doGet方法的servlet,该方法使用java.util.Timer来安排任务。

3 个答案:

答案 0 :(得分:2)

您必须不使用Timer(或通过普通Java API使用线程的任何其他内容)。除了通过its own special interface之外,AppEngine不允许在请求中创建其他线程(并且不允许它们超过请求)。

crons的观点是,他们每次应该发生一次就已经被召唤过一次。你不需要做任何进一步的事情&#34;日程安排&#34;在servlet中 - 只要做你想要在cron发生时发生的事情。

答案 1 :(得分:1)

我认为你这样做有点不对劲。 Cron用于指定调用servlet的间隔/时间。因此,您的实际servlet需要完成工作(即发送推文),而cron服务将确保在正确的时间调用它。

答案 2 :(得分:0)

您可以使用线程,但受The Sandbox中所述的限制。但是你可能根本不需要使用线程。使用Push Queue安排工作。为了减少平台开销,AppEngine过度配置可能会多次启动您的cron任务或排队任务,因此您的逻辑可能需要采取额外的预防措施以避免发送重复的推文。