One would think...however I tried it and it makes no difference. None of my proxy classes implement Serializable and this exception occurs nowhere else, also.
Just to be certain, I just went through and implemented it on *all* of my proxy classes in this app. No change. On Thu, Nov 19, 2009 at 9:30 AM, Igor Vaynberg <[email protected]>wrote: > your CartProxy does not implement serialiazable so it cannot be > serialized... > > -igor > > On Thu, Nov 19, 2009 at 7:30 AM, VGJ <[email protected]> wrote: > > I'm not injecting it directly. I'm using a "proxy" class to get a > reference > > to the stateless bean's interface like so: > > > > public class CartProxy > > { > > private static ShoppingCartLocal lookupCartInterface() > > { > > ShoppingCartLocal cart = null; > > > > try > > { > > InitialContext ctx = new InitialContext(); > > cart = > > (ShoppingCartLocal)ctx.lookup("java:comp/env/ShoppingCartBean"); > > } > > catch (NamingException exp) > > { > > LogProxy.saveEntry(exp); > > } > > > > return cart; > > } > > } > > > > The reference in web.xml makes this possible: > > > > <ejb-local-ref> > > <ejb-ref-name>ShoppingCartBean</ejb-ref-name> > > <ejb-ref-type>Session</ejb-ref-type> > > <local>com.myapp.session.ShoppingCartLocal</local> > > <ejb-link>MyProjectEJB.jar#ShoppingCartBean</ejb-link> > > </ejb-local-ref> > > > > Is this not supposed to work? It's been in production for over 3 > yrs...so I > > hope it does! :) > > > > The entire app is built this way and this one page is the only one > throwing > > this exception. It works, it doesn't stop the show or affect anything > > negatively, so far as I can tell. I would just like to get rid of it and > > figure out what it is. > > > > Thanks again, > > > > -v > > > > On Wed, Nov 18, 2009 at 11:49 PM, Igor Vaynberg <[email protected] > >wrote: > > > >> wicket stuff contains a wicket-jee module which supports injecting ejb > >> beans into wicket components the same way that wicket-spring injects > >> wicket beans. > >> > >> -igor > >> > >> On Wed, Nov 18, 2009 at 10:37 PM, Pieter Degraeuwe > >> <[email protected]> wrote: > >> > Your cart has a reference to the sessionBean ShopingCart. This is not > >> > allowed, however. The IOC incjectionsupport makes this possible by > >> wrapping > >> > this EJB reference with a serializable proxy. > >> > > >> > I only have expecience with wicket-spring end it works great. (In your > >> case, > >> > define your ejb reference in spring and inject it via wicket-spring > >> support > >> > in your page. > >> > problem solved! > >> > > >> > Pieter > >> > > >> > On Wed, Nov 18, 2009 at 10:50 PM, VGJ <[email protected]> wrote: > >> > > >> >> 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 > >> >> > >> > > >> > > >> > > >> > -- > >> > Pieter Degraeuwe > >> > Systemworks bvba > >> > Belgiƫlaan 61 > >> > 9070 Destelbergen > >> > GSM: +32 (0)485/68.60.85 > >> > Email: [email protected] > >> > visit us at http://www.systemworks.be > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
