Java 会话对象实例不同。这是正确的吗?

Java 会话对象实例不同。这是正确的吗?,java,google-app-engine,Java,Google App Engine,我已经编写了一个购物车应用程序,其中一个购物车对象存储在http会话中。在每个请求中,我都会返回一个不同的对象实例。这是预期的行为吗 如果我修改我的购物车对象,我是否需要每次都将其存储在会话中(此时我的更改丢失,因为我没有这样做) 在开发中工作很好,但不能生存。这是因为GAE的分布式架构,还是我做错了什么 我真的希望你能帮助或证实我的想法。提前谢谢 克里斯 p、 我正在使用struts2,但不知道这是否可能是个问题是的,由于会话不一定存储在内存中,因此会话值将是副本,而不是对相同对象的引用 从

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

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

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

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

克里斯


p、 我正在使用struts2,但不知道这是否可能是个问题

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

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


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

谢谢,我做了一些更改来测试这一点,现在有了解决问题的计划。我只需要在每次修改会话映射时将购物车对象实例放回会话映射中,以便在请求之间持久化更改。但愿我在开发这么多代码之前就想到了这一点:-)祝你好运!您可能希望将会话处理封装在自己的函数中,以便将来更容易在单个位置进行更改:)