我编写了一个购物车应用程序,其中购物车对象存储在http会话中。在每个请求中,我都返回了一个不同的对象实例。这是预期的行为吗?
如果我修改了购物车对象,我是否每次都需要再次将其存储在会话中(此时我的更改已丢失,因为我没有这样做)?
在开发中工作得很好但不能活。这是因为GAE的分布式架构还是我做错了什么?
我真的希望你能帮助或确认我的想法。提前谢谢。
克里斯
P.S。我使用struts2,但不知道这可能是一个问题
答案 0 :(得分:2)
是的,由于会话不一定存储在内存中,您的会话值将是副本,而不是对相同对象的引用。
来自GAE docs;
由于App Engine将会话数据存储在数据存储区和内存缓存中,因此存储在会话中的所有值都必须实现java.io.Serializable接口。
换句话说,GAE将根据需要序列化/反序列化您的会话,生成副本。