【发布时间】:2014-04-15 18:38:31
【问题描述】:
我们将在 Tomcat 6 和 JDK 1.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 严重:加载持久会话时出现 IOException:java.io.InvalidObjectException:类 javax.faces.component.UIViewRoot$PropertyKeys 中不存在枚举常量 resourceDependencyUniqueIdCounter java.io.InvalidObjectException:类 javax.faces.component.UIViewRoot$PropertyKeys 中不存在枚举常量 resourceDependencyUniqueIdCounter 在 java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.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.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 java.util.HashMap.readObject(HashMap.java:1155) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595) 在 org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060) 在 org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282) 在 org.apache.catalina.session.StandardManager.load(StandardManager.java:202) 在 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.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) 在 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.FutureTask.run(FutureTask.java:166) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:724) 引起:java.lang.IllegalArgumentException:没有枚举常量 javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter 在 java.lang.Enum.valueOf(Enum.java:236) 在 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$PropertyKeys 中不存在枚举常量 resourceDependencyUniqueIdCounter 在 java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1741) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.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.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 java.util.HashMap.readObject(HashMap.java:1155) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) 在 java.io.ObjectInputStream.readArray(ObjectInputStream.java:1704) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 在 org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595) 在 org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060) 在 org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:282) 在 org.apache.catalina.session.StandardManager.load(StandardManager.java:202) 在 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.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) 在 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.FutureTask.run(FutureTask.java:166) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:724) 引起:java.lang.IllegalArgumentException:没有枚举常量 javax.faces.component.UIViewRoot.PropertyKeys.resourceDependencyUniqueIdCounter 在 java.lang.Enum.valueOf(Enum.java:236) 在 java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1739) ... 43 更多
2014 年 3 月 11 日下午 5:31:26 org.apache.catalina.startup.HostConfig deployWAR
【问题讨论】:
-
对此的补充说明。如果我将 javax.faces.STATE_SAVING_METHOD 参数设置为“客户端”。该应用程序运行正常。