But if you keep as little info as possible, that'll speed it up, right?
Also, maybe I'm missing it, but I don't see that code throwing a fancy tree of the location of your non-serializable object yet. See more comments on the serialization thread. Eelco On 2/12/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
in the new wicket object outputstream i can generated exactly the path for you and exactly what field goes wrong. Ofcourse what i also can do is just completely disable the serializeable test and just do it ;) johan On 2/12/07, Eelco Hillenius <[EMAIL PROTECTED]> wrote: > > Folks, > > In 1.3 we worked hard this week to improve the diagnostics of > Serialization errors. I know from experience that when tracking down > non-serializable classes/ fields, the JDK's default serialization > isn't very helpful. Especially when you work a lot with inner classes > etc. > > https://issues.apache.org/jira/browse/WICKET-265 is the issue we use > for tracking our improvements. I think we've got it pinned down pretty > well now. You'll get stacktraces like: > > wicket.util.io.SerializableChecker$WicketNotSerializableException: > Unable to serialize class: ts4.component.cwt.CwtComponent > Field hierarchy is: > 1 [class=ts4.web.wicket.page.workspace.ComponentPage, path=1] > private java.lang.Object wicket.MarkupContainer.children > [class=[Lwicket.Component;] > private java.lang.Object wicket.MarkupContainer.children[1] > [class=ts4.web.wicket.page.workspace.TopBarPanel, path=1:top-bar] > private java.lang.Object wicket.MarkupContainer.children > [class=[Lwicket.Component;] > private java.lang.Object wicket.MarkupContainer.children[0] > [class=wicket.markup.html.WebMarkupContainer, path=1:top-bar:holder] > private java.lang.Object wicket.MarkupContainer.children > [class=ts4.web.wicket.page.workspace.ComponentBreadCrumbs, > path=1:top-bar:holder:crumbs] > private final ts4.component.WorkspaceComponent > ts4.web.wicket.page.workspace.ComponentBreadCrumbs.component > [class=ts4.component.cwt.CwtComponent] <----- field that is not > serializable > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:334) > at wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:616) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:530) > at wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:616) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:530) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:368) > at wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:616) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:530) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:368) > at wicket.util.io.SerializableChecker.checkFields( > SerializableChecker.java:616) > at wicket.util.io.SerializableChecker.check( > SerializableChecker.java:530) > at wicket.util.io.SerializableChecker.writeObjectOverride( > SerializableChecker.java:684) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java > :287) > at wicket.util.lang.Objects.objectToByteArray(Objects.java:1056) > at wicket.protocol.http.FilePageStore.serializePage( > FilePageStore.java:414) > at wicket.protocol.http.FilePageStore.access$4(FilePageStore.java > :407) > at wicket.protocol.http.FilePageStore$PageSavingThread.run( > FilePageStore.java:601) > at java.lang.Thread.run(Thread.java:613) > Caused by: java.io.NotSerializableException: > ts4.component.cwt.CwtComponent > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java > :1075) > at java.io.ObjectOutputStream.defaultWriteFields( > ObjectOutputStream.java:1369) > at java.io.ObjectOutputStream.writeSerialData( > ObjectOutputStream.java:1341) > ... > > > I hope this will be a useful improvement for all of you working on > 1.3. If you have improvements/ patches, they are as always welcome. > You can find the whole deal in wicket.util.io.SerializableChecker. I > hope to do a port to 2.0 later this week. > > Eelco >
