2012-02-08 133 views
0

我有一个目前部署在jetty8中的web应用程序,它基于jsf2,球衣和氛围。我想迁移到GAE,但以下问题出现在我身上:将jetty8 web应用程序迁移到Google应用程序引擎

GAE是否支持jetty8?

有一个servlet每天定期执行数据库清理任务。为了做到这一点,任务会在开始时产生并延迟循环,以便每24小时运行一次。 我读过GAE不允许产生任务。有没有另外一种方法可以做到这一点,并得到GAE的支持?

回答

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)更适合。

+0

像往常一样感谢。清楚并且重点。 – maxqua72 2012-02-09 14:35:32

2

所有好的信息,只有一个更正 - 用户请求现在被限制为60秒而不是30秒。

还应当指出,有下列限制:

  • HTTP会话的生命周期是不是非常荣幸按了Java EE规范。例如,如果更改会话中某个对象的值,则必须重新设置它以使数据在所有实例中传播。
  • 您无法衍生自己的线程 - 这可能会导致某些JSF实现出现问题,因此可能值得与JSF提供商一起检查它们是否支持GAE。我知道最新版本的JBoss RichFaces支持GAE。
  • 对GAE频道的环境原生支持最初预定为v0.8,但似乎已脱离该版本。

您打算如何将您的数据模型迁移到GAE数据存储? GAE数据存储实际上不适合基于JPA/JDO的模型,因为它与常规关系数据库有很大不同。

+0

谢谢,我纠正了这一点。 – 2012-02-08 16:51:08

+0

谢谢!GAE数据存储是另一个问题。但我主要关心的是jetty8和JSF2(我正在用primefaces使用mojarra实现) – maxqua72 2012-02-09 14:32:26

相关问题