简体   繁体   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

We did a migration of our application which was functioning properly in Tomcat 6 with JDK 1.6 to Tomcat 7 JDK 1.7. 我们将在JDK 1.6的Tomcat 6中正常运行的应用程序迁移到Tomcat 7 JDK 1.7。 The WAR deployed to the Tomcat 6 works properly in Tomcat 7.But the WAR compiled under JDK 1.7, causes the is that if we click any links in the UI it immediately reports session timed out. 部署到Tomcat 6的WAR在Tomcat 7中可以正常工作。但是,在JDK 1.7下编译的WAR导致,如果单击UI中的任何链接,它将立即报告会话超时。 We are using MyFaces 2.0.7 with Trinidad 2.0.0. 我们正在将MyFaces 2.0.7与Trinidad 2.0.0一起使用。 Clicking a link gives a ViewExpiredException. 单击一个链接将提供一个ViewExpiredException。

Problem may be associated with below stacktrace which appears during the start-up of the Tomcat 7 server. 问题可能与下面的堆栈跟踪相关,该堆栈跟踪在Tomcat 7服务器启动期间出现。

Mar 11, 2014 5:31:26 PM org.apache.catalina.session.StandardManager doLoad SEVERE: IOException while loading persisted sessions: java.io.InvalidObjectException: enum constant resourceDependencyUniqueIdCounter does not exist in class javax.faces.component.UIViewRoot$PropertyKeys java.io.InvalidObjectException: enum constant resourceDependencyUniqueIdCounter does not exist in class javax.faces.component.UIViewRoot$PropertyKeys at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInp 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) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readO 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 rdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595) at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060) at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282) at org.apache.catalina.session.StandardManager.load(StandardManager.java:202) at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:489) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5476) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache 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) .catalina.core.StandardHost.addChild(StandardHost.java:632) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.IllegalArgumentException: No enum constant javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter at java.lang.Enum.valueOf(Enum.java:236) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1739) ... 43 more 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个

Mar 11, 2014 5:31:26 PM org.apache.catalina.session.StandardManager startInternal SEVERE: Exception loading sessions from persistent storage java.io.InvalidObjectException: enum constant resourceDependencyUniqueIdCounter does not exist in class javax.faces.component.UIViewRoot$PropertyKeys at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at java.util.HashMap.readObject(HashMap.java:1155) at sun.reflect.NativeMethodAccessorImpl 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 .invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStr 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 eam.readObject(ObjectInputStream.java:370) at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595) at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060) at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282) at org.apache.catalina.session.StandardManager.load(StandardManager.java:202) at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:489) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5476) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) at o 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) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.IllegalArgumentException: No enum constant javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter at java.lang.Enum.valueOf(Enum.java:236) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1739) ... 43 more 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个

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

Tomcat tries to deserialize an existing session, but cannot do so as the serialization byte stream references an enum (resourceDependencyUniqueIdCounter) which it cannot find. Tomcat尝试对现有会话进行反序列化,但不能这样做,因为序列化字节流引用了它找不到的枚举(resourceDependencyUniqueIdCounter)。

I would guess you either updated Tomcat inplace (keeping your old serialized sessions) or that you are still changing your classes a lot without changing the serial number in the class. 我猜您要么就地更新了Tomcat(保留了旧的序列化会话),要么您仍在更改类,而无需更改类中的序列号。

The simplest solution at this point is most likely to clean out the existing serialized session files and try again. 这时最简单的解决方案很可能是清除现有的序列化会话文件,然后重试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM