问题描述
|
我计划仅出于自己的用途实施GAE应用。
该应用程序将使用URL Fetch服务获取其数据,每隔x分钟更新一次(使用计划任务)。然后,当我请求时它将为我提供该信息。
我刚刚开始研究GAE,但是我有一个主要问题无法解决。是否可以在不使用jdo / jpa和数据存储的情况下在不同请求之间的GAE中维护状态?
作为我的唯一用户,我想我可以将信息保留在servlet子类中,这样我就可以避免不得不处理数据存储库...但是我担心的是,如果此应用被移动,该应用将只有很少的请求到磁盘或其他任何东西(尚不知道它是否有特定名称),它会失去状态吗?
我不必担心必须重新启动整个应用程序并不时开始从头开始收集数据,没关系。
解决方法
您可以使用http会话来维护请求之间的状态,但这将使用数据存储区本身(尽管您不必编写任何代码即可获得此行为)。
您可能还考虑使用Cache API(例如memcache)。我认为是Google提供的JSR 107。缓存在实例之间共享,但可以随时清空。但是,如果您对此行为感到满意,则可以选择。查看您的需求,如果您不想编写自己的持久性代码,这可能是最可行的选择。
您可以将数据作为静态数据存储在您的Class或应用程序范围的Object中,但这意味着当实例降速运行或实例切换到另一个实例时,数据将丢失,因为需要将类加载到新实例中实例。
或者,您可以将状态序列化到客户端,然后将其与每个请求一起发送回去。
最健壮的选项是对数据存储的持久性-JPA代码很简单。也许您应该重新考虑?
,如果这是一个供您自己使用的应用程序,并且您要双重确保不会将其设置为多用户使用,并且您不必担心可能会从两个用户中使用它浏览器一次,您可以跳过使用会话,并使用已知的密钥将信息存储在内存缓存中。
如果您避免数据存储的原因是对性能的关注,那么我强烈建议您测试该假设。您可能会感到惊喜。