会话对象实例不同。它是否正确?

时间:2013-01-01 14:26:12

标签: java google-app-engine

我编写了一个购物车应用程序,其中购物车对象存储在http会话中。在每个请求中,我都返回了一个不同的对象实例。这是预期的行为吗?

如果我修改了购物车对象,我是否每次都需要再次将其存储在会话中(此时我的更改已丢失,因为我没有这样做)?

在开发中工作得很好但不能活。这是因为GAE的分布式架构还是我做错了什么?

我真的希望你能帮助或确认我的想法。提前谢谢。

克里斯

P.S。我使用struts2,但不知道这可能是一个问题

1 个答案:

答案 0 :(得分:2)

是的,由于会话不一定存储在内存中,您的会话值将是副本,而不是对相同对象的引用。

来自GAE docs;

  

由于App Engine将会话数据存储在数据存储区和内存缓存中,因此存储在会话中的所有值都必须实现java.io.Serializable接口。

换句话说,GAE将根据需要序列化/反序列化您的会话,生成副本。