Results 1 to 4 of 4

Thread: FlowExecutionStorageException

  1. #1
    Join Date
    Nov 2004
    Location
    Austin, Texas USA
    Posts
    46

    Default FlowExecutionStorageException

    I'm a bit perplexed about this exception. The class that cannot be found is on the classpath, and is referenced many times during execution prior to this exception being thrown. Does anyone have any ideas?

    Code:
    org.springframework.web.flow.execution.FlowExecutionStorageException: ClassNotFoundException loading the flow execution continuation -- this should not happen!; nested exception is java.lang.ClassNotFoundException: com.mycompany.domain.type.CustomType
    java.lang.ClassNotFoundException: com.mycompany.domain.type.CustomType
            at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:219)
            at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:558)
            at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
            at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
            at java.util.HashMap.readObject(HashMap.java:1006)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:324)
            at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:838)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
            at org.springframework.web.flow.execution.impl.FlowSessionImpl.readObject(FlowSessionImpl.java:161)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:324)
            at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:838)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1603)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1271)
            at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
            at org.springframework.web.flow.execution.impl.FlowExecutionImpl.readObject(FlowExecutionImpl.java:445)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:324)
            at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:838)
            at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
            at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
            at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
            at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
            at org.springframework.web.flow.execution.FlowExecutionContinuation.getFlowExecution(FlowExecutionContinuation.java:99)
            at org.springframework.web.flow.execution.servlet.HttpSessionContinuationFlowExecutionStorage.load(HttpSessionContinuationFlowExecutionStorage.java:66)
            at org.springframework.web.flow.execution.FlowExecutionManager.onEvent(FlowExecutionManager.java:272)
            at org.springframework.web.flow.execution.FlowExecutionManager.onEvent(FlowExecutionManager.java:245)
            at org.springframework.web.flow.execution.servlet.ServletFlowExecutionManager.handle(ServletFlowExecutionManager.java:77)
            at org.springframework.web.flow.mvc.FlowController.handleRequestInternal(FlowController.java:137)
            at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:128)
            at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
            at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
            at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
            at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
            at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:355)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
            at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
            at org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:342)
            at net.sf.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:167)
            at net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:125)
            at org.mortbay.jetty.servlet.WebApplicationHandler$Chain.doFilter(WebApplicationHandler.java:334)
            at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:286)
            at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
            at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
            at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
            at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
            at org.mortbay.jetty.plus.PlusWebAppContext.handle(PlusWebAppContext.java:218)
            at org.mortbay.http.HttpServer.service(HttpServer.java:879)
            at org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
            at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
            at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
            at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
            at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:300)
            at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)

  2. #2
    Join Date
    Aug 2004
    Location
    Melbourne, FL
    Posts
    2,794

    Default

    Is this happening in your app or one of the samples?

    Have you ever seen that class before???? I admit it does look suspsciously like one of my sample class names (com.mycompany.domain anyway), but I have no idea where it could be coming from.

    What do you mean the class is referenced many times before the exception is thrown?
    Keith Donald
    Core Spring Development Team

  3. #3
    Join Date
    Nov 2004
    Location
    Austin, Texas USA
    Posts
    46

    Default

    This exception was being thrown in my own application, not one of the samples.

    As it turns out, the root cause of this was the way that I had my servlet container configured. The DispatcherServlet was being loaded by the servlet container's parent classloader, while the class that could not be found was being loaded by the webapp context's classloader. Since the webapp context's classloader is a child of the servlet container's classloader, any attempt to load CustomType from the DispatcherServlet failed.

    The solution is to put the spring jar either in WEB-INF/lib or to put my application classes on the system classpath rather than in WEB-INF/classes.

    Thanks for following up, Keith!

  4. #4
    Join Date
    Sep 2004
    Location
    Leuven, Belgium
    Posts
    1,853

    Default

    Thanks for providing this insight. I added some extra info to the exception that is thrown to hint at your analysis. That will help if someone else encounters the issue.

    Erwin

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •