我很难使用Google AppEngine和会话。
我有一个可以在我的localhost上顺利运行的Java GAE应用程序,但是只要我在GAE上部署它,会话变量的集合就为空。
工作流程如下:我将数据存储在会话中的类中,然后将其读取为JSP页面。将响应发送到servlet,在那里修改,存储它并显示另一个JSP。
我已经检查过了:数据(集合)仍然在servlet中的变量中,但是当涉及JSP时,集合为空。
你有什么想法,为什么它的表现如此奇怪?
感谢。
答案 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)转换为字符串。