somehow you hold reference to:
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate

in your page. That seems to be not serializeable so i guess that one needs
to be transient
and needs to be re lookuped

johan



On Nov 23, 2007 9:38 PM, V. Jenks <[EMAIL PROTECTED]> wrote:

>
> I'm upgrading from Wicket 1.2.4 to 1.2.6 and there's obviously a change
> I'm
> not able to find concerning the session (or...who knows?)
>
> I've got a simple pair of pages, one for viewing a list of entity beans
> (EJB3) and one for editing a chosen entity from the list page.  I'm
> comparing it to dozens of pages I've built like this in the past in
> previous
> versions of Wicket and I just can't figure out why I keep getting this
> exception:
>
> ***********************************************************
> Internal error cloning object. Make sure all dependent objects implement
> Serializable. Class: com.myapp.ui.admin.EditPilot
> wicket.WicketRuntimeException: Internal error cloning object. Make sure
> all
> dependent objects implement Serializable. Class:
> com.myapp.ui.admin.EditPilot
>        at
> wicket.protocol.http.HttpSessionStore.setAttribute(HttpSessionStore.java
> :63)
>        at wicket.Session.setAttribute(Session.java:952)
>        at wicket.PageMap.put(PageMap.java:531)
>        at wicket.Session.touch(Session.java:744)
>        at wicket.Page.renderPage(Page.java:414)
>        at
> wicket.request.target.component.BookmarkablePageRequestTarget.respond(
> BookmarkablePageRequestTarget.java:226)
>        at
> wicket.request.compound.DefaultResponseStrategy.respond(
> DefaultResponseStrategy.java:49)
>        at
> wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(
> AbstractCompoundRequestCycleProcessor.java:66)
>        at
> wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:902)
>        at
> wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)
>        at wicket.RequestCycle.step(RequestCycle.java:1010)
>        at wicket.RequestCycle.steps(RequestCycle.java:1084)
>        at wicket.RequestCycle.request(RequestCycle.java:454)
>        at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
>        at
> org.apache.catalina.core.ApplicationFilterChain.servletService(
> ApplicationFilterChain.java:411)
>        at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:317)
>        at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:198)
>        at
> org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(
> MonitorFilter.java:390)
>        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:270)
>        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:339)
>        at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(
> DefaultReadTask.java:261)
>        at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(
> DefaultReadTask.java:212)
>        at
> com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(
> PortUnificationPipeline.java:361)
>        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
> wicket.protocol.http.HttpSessionStore.setAttribute(HttpSessionStore.java
> :57)
>        ... 47 more
> ***********************************************************
>
> Here's the EditPilot class:
>
> ***********************************************************
> public class EditPilot extends PublicPage
> {
>        public EditPilot()
>        {
>                this(null);
>        }
>
>        public EditPilot(Pilot pilot)
>        {
>                //add page components
>                add(new FeedbackPanel("feedbackPanel"));
>
>                //edit or new?
>                if (pilot == null) pilot = new Pilot();
>
>                //get bean interface
>                final PilotLocal bean = BeanLookup.get("PilotBean");
>
>                //init form object
>                final Form pilotForm = new Form("pilotForm", new
> CompoundPropertyModel(pilot));
>
>                //add form components
>                pilotForm.add(new TextField("salutation")
>                                .add(StringValidator.lengthBetween(1, 3)));
>                pilotForm.add(new TextField("firstName")
>                                .setRequired(true)
>                                .add(StringValidator.lengthBetween(2,
> 50)));
>                pilotForm.add(new TextField("lastName")
>                                .setRequired(true)
>                                .add(StringValidator.lengthBetween(2,
> 50)));
>
>                pilotForm.add(new Button("saveButton")
>                {
>                        public void onSubmit()
>                        {
>                                try
>                                {
>                                        //save form values, redirect
>                                        Pilot pilot =
> (Pilot)pilotForm.getModelObject();
>                                        bean.persist(pilot);
>
>                                        setResponsePage(new ViewPilots());
>                                }
>                                catch (Exception exp)
>                                {
>                                        info(exp.getMessage());
>                                }
>                        }
>                });
>
>                //add cancel button
>                pilotForm.add(new Button("cancelButton")
>                {
>                        public void onSubmit()
>                        {
>                                setResponsePage(new ViewPilots());
>                        }
>                }.setDefaultFormProcessing(false));
>
>                //add form to page
>                add(pilotForm);
>        }
> }
>
> which inherits this...
>
> public abstract class PublicPage extends BasePage
> {
>        public PublicPage()
>        {
>        }
> }
>
> which inherits this...
>
> public abstract class BasePage extends WebPage
> {
>        public BasePage()
>        {
>                //add page components
>                add(new UserHeaderPanel("userHeaderPanel"));
>                add(new TabPanel("tabPanel"));
>                add(new FooterPanel("footerPanel"));
>        }
>
>        protected void redirect(String url) //utility method for
> redirecting
> externally
>        {
>                //disable wicket redirecting
>                getRequestCycle().setRedirect(false);
>
>                //make sure no output for the current cycle is sent
>                getRequestCycle().setRequestTarget(
> EmptyRequestTarget.getInstance());
>
>                //set absolute URL to redirect to
>                getResponse().redirect(url);
>        }
> }
>
> ...and Abraham beget Lot...whom beget......etc.
> ***********************************************************
>
> Here's the BeanLookup class:
>
> ***********************************************************
> public class BeanLookup
> {
>        public static <T> T get(String name)
>        {
>                T bean = null;
>
>                try
>                {
>                        InitialContext ctx = new InitialContext();
>                        bean = (T)ctx.lookup("java:comp/env/" + name);
>                }
>                catch (NamingException exp)
>                {
>                }
>
>                return bean;
>        }
> }
> ***********************************************************
>
> Here's my 'app' class:
>
> ***********************************************************
> public class MyApp extends WebApplication
> {
>        @Override
>  public Class getHomePage()
>        {
>                return Index.class;
>        }
>
>        @Override
>        public void init()
>        {
>                //create external images resource
>                getSharedResources().add("imageResource", new
> ImageResource());
>        }
>
>        /**
>         * set custom session class
>         */
>        @Override
>        public ISessionFactory getSessionFactory()
>        {
>                return new ISessionFactory()
>                {
>                        public Session newSession()
>                        {
>                                return new UserSession(MyApp.this);
>                        }
>                };
>        }
> }
> ***********************************************************
>
> I've tried implementing Serializable all over the place but it doesn't
> help...and comparing this to apps I've built in the past in previous
> versions of Wicket, this is "correct".  I can pull up the ViewPilots page
> just fine but if I even add a reference to the EditPilot page (i.e.
> setResponsePage(new EditPilot())), then that page also throws the same
> exception.
>
> I'm on Ubuntu 7.10 and using Glassfish v2 as the container...but have
> replicated the issue on Winxp and Vista.  As you can see from the error,
> everything is being developed in Netbeans.
>
> What's the obvious trivial detail I'm forgetting? :)
>
> Thanks!
> --
> View this message in context:
> http://www.nabble.com/What-exactly-isn%27t-serializable--tf4863669.html#a13918451
> Sent from the Wicket - User mailing list archive at 
> Nabble.com<http://nabble.com/>
> .
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to