【发布时间】:2016-02-17 01:59:32
【问题描述】:
在 Google App Engine 下,您想要存储在 HttpSession 中的任何对象都必须实现 Serializable,并且它的所有字段都必须是可序列化的,因为在 GAE 中运行的实例可能会从一个 JVM 迁移到另一个.这意味着如果我想将FooBar 实例存储到HttpSession 中,我不能在其中有一个字段指向HttpSession。
但是,我可以存储getId() 返回的 ID。根据this question 的说法,出于安全原因,从其 ID 获取会话的能力已被贬低,但 GAE 实现有所不同。根据this blog post,您可以使用ID 来获取代表HttpSession 的DataStore 实体,但我想要对Java 对象的引用,而不是用于在JVM 之间迁移它的底层数据。
那么,有什么方法可以做我想做的事吗?
【问题讨论】:
-
好的,所以我必须将您的问题阅读三遍左右才能了解您要完成的工作。但是,我仍然看不到您所要求的实际用途。如果您使用
#setAttribute(name, obj)将FooBar对象存储在HttpSession中,则可以随时从会话中获取该对象(在该会话中)。当您总是通过其父HttpSession引用FooBar对象时,为什么要创建循环引用?当您没有会话对象时,您应该无法访问与其关联的任何数据。那么为什么要破坏会话安全呢?
标签: java google-app-engine servlets httpsession