我目前在jetty8中部署了一个Web应用程序,该应用程序基于jsf2,jersey和atmosphere。我想迁移到GAE,但以下问题出现在我面前:
GAE是否支持jetty8?
每天都有一个servlet定期执行数据库清理任务。为了做到这一点,任务在开始时生成并在循环中延迟,以便每24小时运行一次。 我读过GAE不允许生成任务。还有另一种方法可以做到并得到GAE的支持吗?
答案 0 :(得分:4)
我不知道GAE是否特别支持Jetty的版本8,但它在Jetty实例上运行。
您必须将GAE视为PAAS(平台即服务),而不是IAAS(基础架构即服务)提供商。您必须查看他们提供的服务并检查它们是否符合您的要求。有关一般概述,请参阅What Is Google App Engine?;有关特定框架兼容性,请参阅Java Enterprise Edition (Java EE) Technologies。 GAE不是常见的JRE,它有一组有限的支持类:The JRE Class White List。这可能进一步限制兼容性。我不知道Atmosphere是否会运行。我不知道你需要什么Jetty 8细节。 WebSockets的?不可以。您可以改用渠道:The Channel API (Java)。
不允许长时间运行任务(24小时延迟)。但您可以开始计划任务,请参阅此处:Scheduled Tasks With Cron for Java。
请求的执行时间(60秒)有限,因此您无法以这种方式运行长时间运行的任务。但是你可以产生更长时间运行(10分钟)的后台任务,请参见此处:The Task Queue Java API。
重要提示:请查看quotas。当他们惩罚某些应用程序行为时,您需要调整您的应用程序。这可以完全改变您的应用程序设计!
根据我的经验,迁移到GAE是一种激烈的参与。 GAE不适合替代其他托管解决方案。如果您想要这样的IAAS提供商(如Amazon EC2)更适合。
答案 1 :(得分:2)
所有好的信息,只需一次更正 - 用户请求现在限制为60秒而不是30秒。
还应注意,存在以下限制:
您打算如何将数据模型迁移到GAE数据存储区? GAE数据存储确实不适合基于JPA / JDO的模型,因为它与普通关系数据库有很大不同。