簡體   English   中英

從Tomcat 6 JDK 1.6遷移到Tomcat 7 JDK 1.7會話問題

[英]Migrating from Tomcat 6 JDK 1.6 to Tomcat 7 JDK 1.7 Session Issues

我們將在JDK 1.6的Tomcat 6中正常運行的應用程序遷移到Tomcat 7 JDK 1.7。 部署到Tomcat 6的WAR在Tomcat 7中可以正常工作。但是,在JDK 1.7下編譯的WAR導致,如果單擊UI中的任何鏈接,它將立即報告會話超時。 我們正在將MyFaces 2.0.7與Trinidad 2.0.0一起使用。 單擊一個鏈接將提供一個ViewExpiredException。

問題可能與下面的堆棧跟蹤相關,該堆棧跟蹤在Tomcat 7服務器啟動期間出現。

2014年3月11日,下午5:31:26 org.apache.catalina.session.StandardManager doLoad嚴重:IO加載持久會話時:IOException:java.io.InvalidObjectException:枚舉常量resourceDependencyUniqueIdCounter在類javax.faces.component.UIViewRoot $中不存在。 PropertyKeys java.io.InvalidObjectException:枚舉常量resourceDependencyUniqueIdCounter在java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741)的java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741)的類javax.faces.component.UIViewRoot $ PropertyKeys中不存在。的java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704)處的java:1345)的java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704)處的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)處的java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) java.io.ObjectInputStream.readArray(ObjectInputStream.java:1342)在java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704)在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)在java.io.ObjectInp utStream.readObject(ObjectInputStream.java:370)at java.util.HashMap.readObject(HashMap.java:1155)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 57)位於java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)位於java.lang.reflect.Method.invoke(Method.java:606)位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)上的java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)在java.io.ObjectInputStream上的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)處的.readArray(ObjectInputStream.java:1704)java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)在java.io.ObjectInputStream.readSerialData(ObjectInputStream。 java:1913),位於java.io.ObjectInputStream.readO org.apache.catalina.session.StandardSession.readObject上的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)上的rdinaryObject(ObjectInputStream.java:1348)在java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)上(StandardSession.java:1595),位於org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060),位於org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282),位於org.apache。 org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:489)上的catalina.session.StandardManager.load(StandardManager.java:202)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java: 150)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在org.apache.catalina.core.ContainerBase org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)的.addChildInternal(ContainerBase.java:901) org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)上的.catalina.core.StandardHost.addChild(StandardHost.java:632)在org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig) .java:1857),位於java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471),位於java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334),位於java.util.concurrent。 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)的FutureTask.run(FutureTask.java:166)在java.lang的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) .Thread.run(Thread.java:724)原因:java.lang.IllegalArgumentException:在java.lang.Enum.valueOf(Enum.java:236)處沒有枚舉常量javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1739)...還有43個

2014年3月11日,下午5:31:26 org.apache.catalina.session.StandardManager startInternal嚴重:從持久性存儲java.io.InvalidObjectException中加載會話的異常:類javax.faces.component.UIViewRoot $中不存在枚舉常量resourceDependencyUniqueIdCounter。 java.io的java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741)上的PropertyKeys java.io.ObjectInputStream.readArray(ObjectInputStream.java:1345)上的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704)處的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)處的java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)的ObjectInputStream.java:1704)java.util.HashMap.readObject(HashMap.java:1155)的java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) )在sun.reflect.NativeMethodAccessorImpl sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)上的.invoke0(Native方法)in java.lang.reflect.Method.invoke(Method.java :606),位於java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017),位於java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891),位於java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796),位於Java java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)位於java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704)位於java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)在java.io.ObjectInputStream中。 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)的defaultReadFields(ObjectInputStream.java:1989)java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)的java.io.ObjectInputStream.readObject0(ObjectInputStream.java) :1348),位於java.io.ObjectInputStr org上org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595)的eam.readObject(ObjectInputStream.java:370)org上org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060)的eam.readObject(ObjectInputStream.java:10) org.apache.catalina.session.StandardManager.load(StandardManager.java:202)處的.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282)在org.apache.catalina.session.StandardManager.startInternal(StandardManager .java:489)位於org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150),位於org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5476),位於org.apache.catalina。 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)的util.LifecycleBase.start(LifecycleBase.java:150)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)在 rg.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1857)在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471)在java.util.concurrent.FutureTask $ Sync。在Java.util.concurrent.FutureTask.run(FutureTask.java:166)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)處的innerRun(FutureTask.java:166)在java.util.concurrent.ThreadPoolExecutor處java.lang.Thread.run(Thread.java:724)處的$ Worker.run(ThreadPoolExecutor.java:615)原因:java.lang.IllegalArgumentException:沒有枚舉常量javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1739)的java.lang.Enum.valueOf(Enum.java:236)...還有43個

2014年3月11日,下午5:31:26 org.apache.catalina.startup.HostConfig deployWAR

Tomcat嘗試對現有會話進行反序列化,但不能這樣做,因為序列化字節流引用了它找不到的枚舉(resourceDependencyUniqueIdCounter)。

我猜您要么就地更新了Tomcat(保留了舊的序列化會話),要么您仍在更改類,而無需更改類中的序列號。

這時最簡單的解決方案很可能是清除現有的序列化會話文件,然后重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM