[英]InvalidClassException with spring webflow on google app engine
[英]Google App Engine - InvalidClassException when logging in
我正在使用自定義類UserProfile來管理我在Google App Engine中的會話,但收到錯誤消息(當用戶訪問應用程序的默認Servlet時):
javax.servlet.ServletException: java.lang.RuntimeException: java.io.InvalidClassException: ro.expert.evt.shared.entities.ObjectModel; local class incompatible:
stream classdesc serialVersionUID = -2824144882306533912,
local class serialVersionUID = 6500787607817458947
我知道問題是我更新了我的課程,並且在部署我的應用程序時,它沒有serialVersionUID。
我的問題是:
如果設置了生成的serialVersionUID,問題是否會再次出現? 每次修改用戶類時,都必須重新生成它嗎?
如何為我已經登錄的用戶解決此問題? 如何使他們的會話無效(“清除”他們的cookie應該起作用)
編輯:清除整個內存緩存會使用戶會話無效嗎?
我應該調用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,然后您可以將默認版本指向新版本...這樣,現有用戶仍將繼續使用舊版本...但是新用戶將繼續使用舊版本打新版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.