HttpSession.getId()
方法返回值在时间上保证是唯一的,还是只在活动会话之间保持唯一性?
换句话说,我能否将其用作会话日志条目的键(记录用户何时登录以及登录多长时间)?
如果 getId
是特定于实现的(我猜它是,因为 J2EE 规范对此问题不予说明),那么 Google App Engine 如何处理它?
HttpSession.getId()
方法返回值在时间上保证是唯一的,还是只在活动会话之间保持唯一性?
换句话说,我能否将其用作会话日志条目的键(记录用户何时登录以及登录多长时间)?
如果 getId
是特定于实现的(我猜它是,因为 J2EE 规范对此问题不予说明),那么 Google App Engine 如何处理它?
这个问题是关于Google App Engine的。 GAE基于Jetty而不是Tomcat,因此您无法使用ManagerBase.createSession(java.lang.String)。会话在Datastore(或memcached)中分布和持久化。它通过一个名为 JSESSIONID 的 cookie(由servlet容器管理)进行跟踪。在Datastore中有_id_ah_SESSION实体,其id前缀为“_ahs”的会话id。目前_ah_SESSION实体不会自动删除。
因此答案是:当前GAE上的会话ID在时间上是唯一的。