I'm completely at wits end here and I hope someone can point out what's
wrong.

I've got an e-commerce application that is simply moving between two pages
using setRedirectPage() when going from a product detail page to the
shopping cart page.  There isn't anything remarkable about either of these
two pages, they're basically like any other in the app.  However, when the
cart page loads, I get the exception at the bottom of this message.

I've tried implementing Serializable on the Cart() page class but it makes
no difference.  It points out
"com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate" as the
culprit.  I use a stateful session bean (ShoppingCart) which is passed
around the app as part of the session (custom WebSession-derived class)

This is the only page this occurs on.  There are several other steps in the
cart's checkout process that look exactly like this one and the exception
doesn't happen on any of the others

Any ideas?

Exception:

25717 [httpSSLWorkerThread-8080-1] ERROR org.apache.wicket.util.lang.Objects
- Error serializing object class com.myapp.ui.Cart [object=[Page class =
com.myapp.ui.Cart, id = 3, version = 0]]
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
Unable to serialize class:
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate
Field hierarchy is:
  3 [class=com.myapp.ui.Cart, path=3]
    private java.lang.Object org.apache.wicket.MarkupContainer.children
[class=[Ljava.lang.Object;]
      private
org.apache.wicket.markup.html.ContainerWithAssociatedMarkupHelper
org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup.markupHelper[6]
[class=org.apache.wicket.markup.html.form.Form, path=3:cartForm]
        private java.lang.Object org.apache.wicket.MarkupContainer.children
[class=[Ljava.lang.Object;]
          private java.lang.Object
org.apache.wicket.MarkupContainer.children[0] [class=com.myapp.ui.Cart$1,
path=3:cartForm:orderLinesView]
            final com.myapp.session.ShoppingCartLocal
com.myapp.ui.Cart$1.val$cart [class=$Proxy92]
              protected java.lang.reflect.InvocationHandler
java.lang.reflect.Proxy.h
[class=com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate]
<----- field that is not serializable
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:346)
        at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:392)
        at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:392)
        at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615)
        at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538)
        at
org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:684)
        at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)
        at
org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:129)
        at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:322)
        at
org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1120)
        at
org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageStore.java:203)
        at
org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:840)
        at
org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put(SecondLevelCacheSessionStore.java:332)
        at org.apache.wicket.Session.requestDetached(Session.java:1404)
        at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1176)
        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1454)
        at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
        at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:456)
        at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:289)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.io.NotSerializableException:
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at
java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at
java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
        at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
        at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at
org.apache.wicket.util.io.IObjectStreamFactory$DefaultObjectStreamFactory$2.writeObjectOverride(IObjectStreamFactory.java:121)
        ... 38 more

Reply via email to