AppEngine和会话

时间:2011-12-22 15:54:55

标签: java google-app-engine session

我很难使用Google AppEngine和会话。

我有一个可以在我的localhost上顺利运行的Java GAE应用程序,但是只要我在GAE上部署它,会话变量的集合就为空。

工作流程如下:我将数据存储在会话中的类中,然后将其读取为JSP页面。将响应发送到servlet,在那里修改,存储它并显示另一个JSP。

我已经检查过了:数据(集合)仍然在servlet中的变量中,但是当涉及JSP时,集合为空。

你有什么想法,为什么它的表现如此奇怪?

感谢。

4 个答案:

答案 0 :(得分:2)

您是否在appengine-web.xml文件中启用了会话?
看看 http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions

答案 1 :(得分:1)

您必须做两件事来启用会话:

1在war / WEB-INF / appengine-web.xml

<sessions-enabled>true</sessions-enabled>

2您在会话中存储的所有对象都应实现java.lang.Serializable

public class ParameterForSession implements Serializable {
    // Your code here
}

答案 2 :(得分:0)

确保会话中存储的所有对象都实现java.io.Serializable接口。

答案 3 :(得分:0)

您可以将您要放入会话集合的数据模型发布吗?尽管是java可序列化的,但是某些对象不是memcache / session可序列化的;例如,gxt模型浮现在脑海中。增强或最终依赖于瞬态映射的对象无法保存到会话或内存缓存中。尝试只保存对象本身,然后检查结果,或者直接告诉您是否存在序列化问题的堆栈跟踪。

如果无法按原样序列化模型,请考虑使用ObjectOutputStream将对象转换为可序列化的byte [],或使用其他序列化机制(如GWT RPC serializer)转换为字符串。