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
>

Reply via email to