Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google应用程序引擎-登录时出现InvalidClassException_Java_Google App Engine_Session_Serialization - Fatal编程技术网

Java Google应用程序引擎-登录时出现InvalidClassException

Java Google应用程序引擎-登录时出现InvalidClassException,java,google-app-engine,session,serialization,Java,Google App Engine,Session,Serialization,我正在使用自定义类UserProfile来管理我在Google app engine中的会话,我收到了错误(当用户访问应用程序的默认servlet时): 我知道问题是我更新了我的类,当我部署我的应用程序时,它没有serialVersionUID 我的问题是: 如果我设置生成的serialVersionUID,问题会再次出现吗?我是否必须在每次修改用户类时重新生成它 如何为已登录的用户修复此问题?我如何使他们的会话无效(“清除”他们的cookie应该有效) 编辑: 清除整个memcache会使用户

我正在使用自定义类UserProfile来管理我在Google app engine中的会话,我收到了错误(当用户访问应用程序的默认servlet时):

我知道问题是我更新了我的类,当我部署我的应用程序时,它没有serialVersionUID

我的问题是:

  • 如果我设置生成的serialVersionUID,问题会再次出现吗?我是否必须在每次修改用户类时重新生成它

  • 如何为已登录的用户修复此问题?我如何使他们的会话无效(“清除”他们的cookie应该有效)

  • 编辑: 清除整个memcache会使用户会话无效吗

    我应该调用getSession().invalidate(),但我无法运行任何代码来捕获异常:

    Caused by: java.lang.RuntimeException: java.io.InvalidClassException: ro.expert.evt.shared.entities.ObjectModel; local class incompatible: stream classdesc serialVersionUID = -2824144882306533912, local class serialVersionUID = 6500787607817458947
        at com.google.apphosting.runtime.SessionManagerUtil.deserialize(SessionManagerUtil.java:57)
        at com.google.apphosting.runtime.jetty.MemcacheSessionStore.getSession(MemcacheSessionStore.java:39)
        at com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java:327)
        at com.google.apphosting.runtime.jetty.SessionManager.getSession(SessionManager.java:301)
        at org.mortbay.jetty.servlet.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:237)
        at org.mortbay.jetty.servlet.SessionHandler.setRequestedId(SessionHandler.java:246)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:136)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
        at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
    ... 16 more
    

    在我的初始servlet中是否有可以重写的方法,以便捕获上面的异常并使用户的会话无效?

    是的,您必须提供显式的serialVersionUID值以避免此错误。您可以在部署或/和类修改之间保持相同的值


    对于现有用户,您可以使用GAE的版本控制功能。使用增加的版本部署,例如现有的GAE应用程序v。1因此,将新代码部署为v.2,然后您可以将默认版本重新指向新版本…这样现有用户仍将继续使用旧版本…但新用户将使用新版本。

    作为替代方案,也许清除整个memcache和_ah_会话表应清除所有用户会话?
    Caused by: java.lang.RuntimeException: java.io.InvalidClassException: ro.expert.evt.shared.entities.ObjectModel; local class incompatible: stream classdesc serialVersionUID = -2824144882306533912, local class serialVersionUID = 6500787607817458947
        at com.google.apphosting.runtime.SessionManagerUtil.deserialize(SessionManagerUtil.java:57)
        at com.google.apphosting.runtime.jetty.MemcacheSessionStore.getSession(MemcacheSessionStore.java:39)
        at com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java:327)
        at com.google.apphosting.runtime.jetty.SessionManager.getSession(SessionManager.java:301)
        at org.mortbay.jetty.servlet.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:237)
        at org.mortbay.jetty.servlet.SessionHandler.setRequestedId(SessionHandler.java:246)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:136)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
        at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266)
    ... 16 more