我正在开展GWT Appenginge项目。我从外部api获取数据,我想每分钟更新一次数据库。我刚发现appengine不允许定时器!为什么?? 有什么变通方法,或者你认为我有一个普遍的设计缺陷。
由于
答案 0 :(得分:3)
您是否尝试过App Engine cron任务?
答案 1 :(得分:1)
您可能正在寻找与此相似的内容:GWT, Google App Engine, TimerTask or Thread in ServiceImpl throw exception
此外,您可能想要更新问题标题 - 它似乎与您的问题无关。
答案 2 :(得分:1)
按要求回答你的问题:
我刚发现appengine不允许计时器!为什么?
java.util.Timer是使用Thread实现的,除了使用自己的API之外,AppEngine不允许。因此,当您尝试使用java.util.Timer时,会出现异常:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:375)
at java.security.AccessController.checkPermission(AccessController.java:565)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.apphosting.runtime.security.CustomSecurityManager.checkPermission(CustomSecurityManager.java:56)
at com.google.apphosting.runtime.security.CustomSecurityManager.checkAccess(CustomSecurityManager.java:131)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315)
at java.lang.Thread.init(Thread.java:378)
at java.lang.Thread.<init>(Thread.java:432)
at java.util.TimerThread.<init>(Timer.java:499)
at java.util.Timer.<init>(Timer.java:101)
at java.util.Timer.<init>(Timer.java:132)
禁止任意线程创建使AppEngine系统更容易管理同一台机器上的多个应用程序而不会相互干扰太多。
AppEngine正在推出一项名为&#34;托管虚拟机&#34;这将允许您想要的任何环境,包括可以具有后台线程的完整JVM: https://developers.google.com/appengine/docs/managed-vms/
请注意,此API目前位于&#34;预览&#34;这意味着它还不建议用于可靠的生产用途。