Jsf java.io.NotSerializableException:SpringWebFlow项目中的net.sf.ehcache.Cache

Jsf java.io.NotSerializableException:SpringWebFlow项目中的net.sf.ehcache.Cache,jsf,ehcache,spring-webflow,Jsf,Ehcache,Spring Webflow,我正在将我们的jsf项目迁移到SpringWebFlow+jsf。我们使用ehcache来存储聊天信息和用户数据。Dpwb类(序列化)从ehcache中提取数据。只要Dpwb类是序列化的,它就应该工作,为什么它要序列化ehcache,我对此无能为力 flow.xml <flow xmlns="http://www.springframework.org/schema/webflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

我正在将我们的jsf项目迁移到SpringWebFlow+jsf。我们使用ehcache来存储聊天信息和用户数据。Dpwb类(序列化)从ehcache中提取数据。只要Dpwb类是序列化的,它就应该工作,为什么它要序列化ehcache,我对此无能为力

flow.xml

<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow
        http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <var name="wbIdentifiers" class="com.emyed.whiteboard.controller.WhiteboardIdentifiers" />
    <view-state id="createWb" view="createdialog.xhtml">
        <transition on="create" to="wboard">
            <evaluate expression="generalCreateWhiteboard.create()"
                result="wbIdentifiers" />
        </transition>
    </view-state>


    <view-state id="wboard" view="/WEB-INF/views/D/whiteboard.xhtml">
        <on-render>
            <evaluate expression="generalCreateWhiteboard.setDisplayWhiteboard(wbIdentifiers)"  result="viewScope.dpwb "></evaluate>
        </on-render>
    </view-state>

</flow>

例外情况

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.webflow.execution.repository.snapshot.SnapshotCreationException: Could not serialize flow execution; make sure all objects stored in flow or flash scope are serializable
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

org.springframework.webflow.execution.repository.snapshot.SnapshotCreationException: Could not serialize flow execution; make sure all objects stored in flow or flash scope are serializable
    org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.<init>(SerializedFlowExecutionSnapshot.java:75)
    org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.createSnapshot(SerializedFlowExecutionSnapshotFactory.java:70)
    org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.snapshot(AbstractSnapshottingFlowExecutionRepository.java:75)
    org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.putFlowExecution(DefaultFlowExecutionRepository.java:126)
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:171)
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
    org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle(JsfFlowHandlerAdapter.java:48)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

java.io.NotSerializableException: net.sf.ehcache.Cache
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    java.util.HashMap.writeObject(HashMap.java:1001)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422)
    org.springframework.webflow.core.collection.LocalAttributeMap.writeObject(LocalAttributeMap.java:327)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    java.util.HashMap.writeObject(HashMap.java:1001)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422)
    org.springframework.webflow.core.collection.LocalAttributeMap.writeObject(LocalAttributeMap.java:327)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    org.springframework.webflow.engine.impl.FlowSessionImpl.writeExternal(FlowSessionImpl.java:160)
    java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1429)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1398)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    java.util.LinkedList.writeObject(LinkedList.java:943)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    org.springframework.webflow.engine.impl.FlowExecutionImpl.writeExternal(FlowExecutionImpl.java:309)
    java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1429)
    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1398)
    java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.serialize(SerializedFlowExecutionSnapshot.java:173)
    org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.<init>(SerializedFlowExecutionSnapshot.java:70)
    org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.createSnapshot(SerializedFlowExecutionSnapshotFactory.java:70)
    org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.snapshot(AbstractSnapshottingFlowExecutionRepository.java:75)
    org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.putFlowExecution(DefaultFlowExecutionRepository.java:126)
    org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:171)
    org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
    org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle(JsfFlowHandlerAdapter.java:48)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework.webflow.execution.repository.snapshot.SnapshotCreationException:无法序列化流执行;确保flow或flash scope中存储的所有对象都可序列化
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javaservlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javaservlet.http.HttpServlet.service(HttpServlet.java:728)
根本原因
org.springframework.webflow.execution.repository.snapshot.SnapshotCreationException:无法序列化流执行;确保flow或flash scope中存储的所有对象都可序列化
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshot.(SerializedFlowExecutionSnapshot.java:75)
org.springframework.webflow.execution.repository.snapshot.SerializedFlowExecutionSnapshotFactory.CreateSapshot(SerializedFlowExecutionSnapshotFactory.java:70)
org.springframework.webflow.execution.repository.snapshot.AbstractSnapshottingFlowExecutionRepository.snapshot(AbstractSnapshottingFlowExecutionRepository.java:75)
org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository.putFlowExecution(DefaultFlowExecutionRepository.java:126)
org.springframework.webflow.executor.flowExecuteImpl.resumeExecution(flowExecuteImpl.java:171)
org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle(JsfFlowHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javaservlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javaservlet.http.HttpServlet.service(HttpServlet.java:728)
根本原因
java.io.NotSerializableException:net.sf.ehcache.Cache
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1164)
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1158)
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1158)
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1158)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
java.util.HashMap.writeObject(HashMap.java:1001)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:39)
reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1158)
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:422)
org.springframework.webflow.core.collection.LocalAttributeMap.writeObject(LocalAttributeMap.java:327)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:39)
reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1158)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
java.util.HashMap.writeObject(HashMap.java:1001)
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:39)
reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Metho