【问题标题】:AppEngine and sessionsAppEngine 和会话
【发布时间】:2017-04-14 19:10:56
【问题描述】:

我在使用 Google AppEngine 和会话时遇到了困难。

我有一个 Java GAE 应用程序,可以在我的本地主机上顺利运行,但是一旦我将它部署到 GAE 上,会话变量的集合就为空。

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

我查了一下:数据(一个集合)还在servlet的变量里,但是到了JSP的时候,这个集合是空的。

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

谢谢。

【问题讨论】:

    标签: java google-app-engine session


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      2 你存储在 session 中的所有对象都应该实现 java.lang.Serializable

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2010-11-11
            • 2018-08-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-28
            • 1970-01-01
            • 2014-11-06
            • 2022-11-07
            相关资源
            最近更新 更多