You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Behrooz Nobakht <no...@gmail.com> on 2012/03/05 11:09:03 UTC

How to suppress WicketSerializationException using ListView

Hello,

I'm using a ListView<*S*> in which S is not "serializable" but it is not
either kept in the page data structure. So, every time the page is
rendered, I fetch a list of *S* and then construct the ListView. Even in
this point, I am not really sure if this assumption is correct but I am
assuming that since no data is kept at the page component level, so there
is not need for *S* to be serializable. However, I get the following
exception in which *T extends S*:

2012-03-05 10:48:55,002 ERROR [http-8080-6] Error serializing object class
com.my.MyPage [object=[Page class = com.my.MyPage, id = 7, render count =
1]] (JavaSerializer.java:94)
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
Unable to serialize class: com.my.T
Field hierarchy is:
  7 [class=com.my.MyPage, path=7]
    private java.lang.Object org.apache.wicket.MarkupContainer.children
[class=[Ljava.lang.Object;]
      java.lang.Object org.apache.wicket.Component.data[9]
[class=com.my.MyPage$MyListView, path=7:serviceInstances]
        java.lang.Object org.apache.wicket.Component.data
[class=org.apache.wicket.model.util.WildcardListModel]
          private java.lang.Object
org.apache.wicket.model.util.GenericBaseModel.object
[class=java.util.ArrayList]
            private java.lang.Object
org.apache.wicket.model.util.GenericBaseModel.object[write:1] [class=*
com.my.T*] *<----- field that is not serializable*
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:386)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.access$500(SerializableChecker.java:65)
    at
org.apache.wicket.util.io.SerializableChecker$1InterceptingObjectOutputStream.replaceObject(SerializableChecker.java:525)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1140)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:710)
    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
    at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
    at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:532)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:431)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
    at
org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
    at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
    at
org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:715)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
    at
org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:258)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
    at
org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:77)
    at
org.apache.wicket.pageStore.DefaultPageStore.serializePage(DefaultPageStore.java:368)
    at
org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:146)
    at
org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.storeTouchedPages(PageStoreManager.java:383)
    at
org.apache.wicket.page.RequestAdapter.commitRequest(RequestAdapter.java:171)
    at
org.apache.wicket.page.AbstractPageManager.commitRequest(AbstractPageManager.java:94)
    at
org.apache.wicket.page.PageManagerDecorator.commitRequest(PageManagerDecorator.java:68)
    at
org.apache.wicket.page.PageAccessSynchronizer$2.commitRequest(PageAccessSynchronizer.java:281)
    at org.apache.wicket.Application$2.onDetach(Application.java:1598)
    at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:99)
    at
org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:97)
    at
org.apache.wicket.util.listener.ListenerCollection$1.notify(ListenerCollection.java:119)
    at
org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:143)
    at
org.apache.wicket.util.listener.ListenerCollection.reversedNotifyIgnoringExceptions(ListenerCollection.java:113)
    at
org.apache.wicket.request.cycle.RequestCycleListenerCollection.onDetach(RequestCycleListenerCollection.java:95)
    at
org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:600)
    at
org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:539)
    at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:287)
    at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
    at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218)
    at
com.fredhopper.controller.dashboard.DashboardApplicationFilter.doFilter(DashboardApplicationFilter.java:51)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.NotSerializableException: com.my.T
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at java.util.ArrayList.writeObject(ArrayList.java:710)
    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
    at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
    at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
    at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
    at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
    at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
    at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
    at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
    at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
    at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
    at
org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:250)
    ... 34 more

As far as I've tracked down the problem, the class WildCardListModel
assumes that in the method createSerializableVersionOf it can create a
serializable version of a List of T which is not correct. In general this
is harmless for my application. Now, my question is that if there is a way
to configure Wicket to suppress this exception? Or, what is the best way to
deal with this issue?

As a side note, I cannot make neither S nor T serializable at this moment.

Thank you in advance,
Behrooz Nobakht

Re: How to suppress WicketSerializationException using ListView

Posted by Behrooz Nobakht <no...@gmail.com>.
Thanks, solved the problem.

On Mon, Mar 5, 2012 at 11:14 AM, vineet semwal
<vi...@gmail.com>wrote:

> use loadabledetachablemodel and it should load a list of your
> unserialiable entities that will poupulate your listview
>
>
>
> On Mon, Mar 5, 2012 at 3:39 PM, Behrooz Nobakht <no...@gmail.com> wrote:
> > Hello,
> >
> > I'm using a ListView<*S*> in which S is not "serializable" but it is not
> > either kept in the page data structure. So, every time the page is
> > rendered, I fetch a list of *S* and then construct the ListView. Even in
> > this point, I am not really sure if this assumption is correct but I am
> > assuming that since no data is kept at the page component level, so there
> > is not need for *S* to be serializable. However, I get the following
> > exception in which *T extends S*:
> >
> > 2012-03-05 10:48:55,002 ERROR [http-8080-6] Error serializing object
> class
> > com.my.MyPage [object=[Page class = com.my.MyPage, id = 7, render count =
> > 1]] (JavaSerializer.java:94)
> >
> org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
> > Unable to serialize class: com.my.T
> > Field hierarchy is:
> >  7 [class=com.my.MyPage, path=7]
> >    private java.lang.Object org.apache.wicket.MarkupContainer.children
> > [class=[Ljava.lang.Object;]
> >      java.lang.Object org.apache.wicket.Component.data[9]
> > [class=com.my.MyPage$MyListView, path=7:serviceInstances]
> >        java.lang.Object org.apache.wicket.Component.data
> > [class=org.apache.wicket.model.util.WildcardListModel]
> >          private java.lang.Object
> > org.apache.wicket.model.util.GenericBaseModel.object
> > [class=java.util.ArrayList]
> >            private java.lang.Object
> > org.apache.wicket.model.util.GenericBaseModel.object[write:1] [class=*
> > com.my.T*] *<----- field that is not serializable*
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:386)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.access$500(SerializableChecker.java:65)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker$1InterceptingObjectOutputStream.replaceObject(SerializableChecker.java:525)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1140)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
> >    at java.util.ArrayList.writeObject(ArrayList.java:710)
> >    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
> >    at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >    at java.lang.reflect.Method.invoke(Method.java:601)
> >    at
> > java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
> >    at
> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
> >    at
> >
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:532)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:431)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
> >    at
> >
> org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:715)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
> >    at
> >
> org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:258)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
> >    at
> >
> org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:77)
> >    at
> >
> org.apache.wicket.pageStore.DefaultPageStore.serializePage(DefaultPageStore.java:368)
> >    at
> >
> org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:146)
> >    at
> >
> org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.storeTouchedPages(PageStoreManager.java:383)
> >    at
> >
> org.apache.wicket.page.RequestAdapter.commitRequest(RequestAdapter.java:171)
> >    at
> >
> org.apache.wicket.page.AbstractPageManager.commitRequest(AbstractPageManager.java:94)
> >    at
> >
> org.apache.wicket.page.PageManagerDecorator.commitRequest(PageManagerDecorator.java:68)
> >    at
> >
> org.apache.wicket.page.PageAccessSynchronizer$2.commitRequest(PageAccessSynchronizer.java:281)
> >    at org.apache.wicket.Application$2.onDetach(Application.java:1598)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:99)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:97)
> >    at
> >
> org.apache.wicket.util.listener.ListenerCollection$1.notify(ListenerCollection.java:119)
> >    at
> >
> org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:143)
> >    at
> >
> org.apache.wicket.util.listener.ListenerCollection.reversedNotifyIgnoringExceptions(ListenerCollection.java:113)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onDetach(RequestCycleListenerCollection.java:95)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:600)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:539)
> >    at
> >
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:287)
> >    at
> >
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
> >    at
> >
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218)
> >    at
> >
> com.fredhopper.controller.dashboard.DashboardApplicationFilter.doFilter(DashboardApplicationFilter.java:51)
> >    at
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> >    at
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> >    at
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> >    at
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> >    at
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> >    at
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> >    at
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> >    at
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> >    at
> >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
> >    at
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> >    at
> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
> >    at java.lang.Thread.run(Thread.java:722)
> > Caused by: java.io.NotSerializableException: com.my.T
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
> >    at java.util.ArrayList.writeObject(ArrayList.java:710)
> >    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
> >    at
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >    at java.lang.reflect.Method.invoke(Method.java:601)
> >    at
> > java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
> >    at
> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
> >    at
> >
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
> >    at
> >
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
> >    at
> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
> >    at
> >
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
> >    at
> >
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
> >    at
> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
> >    at
> >
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
> >    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
> >    at
> >
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
> >    at
> > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
> >    at
> >
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
> >    at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
> >    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
> >    at
> >
> org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:250)
> >    ... 34 more
> >
> > As far as I've tracked down the problem, the class WildCardListModel
> > assumes that in the method createSerializableVersionOf it can create a
> > serializable version of a List of T which is not correct. In general this
> > is harmless for my application. Now, my question is that if there is a
> way
> > to configure Wicket to suppress this exception? Or, what is the best way
> to
> > deal with this issue?
> >
> > As a side note, I cannot make neither S nor T serializable at this
> moment.
> >
> > Thank you in advance,
> > Behrooz Nobakht
>
>
>
> --
> thank you,
>
> regards,
> Vineet Semwal
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Re: How to suppress WicketSerializationException using ListView

Posted by vineet semwal <vi...@gmail.com>.
use loadabledetachablemodel and it should load a list of your
unserialiable entities that will poupulate your listview



On Mon, Mar 5, 2012 at 3:39 PM, Behrooz Nobakht <no...@gmail.com> wrote:
> Hello,
>
> I'm using a ListView<*S*> in which S is not "serializable" but it is not
> either kept in the page data structure. So, every time the page is
> rendered, I fetch a list of *S* and then construct the ListView. Even in
> this point, I am not really sure if this assumption is correct but I am
> assuming that since no data is kept at the page component level, so there
> is not need for *S* to be serializable. However, I get the following
> exception in which *T extends S*:
>
> 2012-03-05 10:48:55,002 ERROR [http-8080-6] Error serializing object class
> com.my.MyPage [object=[Page class = com.my.MyPage, id = 7, render count =
> 1]] (JavaSerializer.java:94)
> org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
> Unable to serialize class: com.my.T
> Field hierarchy is:
>  7 [class=com.my.MyPage, path=7]
>    private java.lang.Object org.apache.wicket.MarkupContainer.children
> [class=[Ljava.lang.Object;]
>      java.lang.Object org.apache.wicket.Component.data[9]
> [class=com.my.MyPage$MyListView, path=7:serviceInstances]
>        java.lang.Object org.apache.wicket.Component.data
> [class=org.apache.wicket.model.util.WildcardListModel]
>          private java.lang.Object
> org.apache.wicket.model.util.GenericBaseModel.object
> [class=java.util.ArrayList]
>            private java.lang.Object
> org.apache.wicket.model.util.GenericBaseModel.object[write:1] [class=*
> com.my.T*] *<----- field that is not serializable*
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:386)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.access$500(SerializableChecker.java:65)
>    at
> org.apache.wicket.util.io.SerializableChecker$1InterceptingObjectOutputStream.replaceObject(SerializableChecker.java:525)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1140)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
>    at java.util.ArrayList.writeObject(ArrayList.java:710)
>    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>    at java.lang.reflect.Method.invoke(Method.java:601)
>    at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
>    at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
>    at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:532)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:431)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:646)
>    at
> org.apache.wicket.util.io.SerializableChecker.internalCheck(SerializableChecker.java:569)
>    at
> org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:365)
>    at
> org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.java:715)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
>    at
> org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:258)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:342)
>    at
> org.apache.wicket.serialize.java.JavaSerializer.serialize(JavaSerializer.java:77)
>    at
> org.apache.wicket.pageStore.DefaultPageStore.serializePage(DefaultPageStore.java:368)
>    at
> org.apache.wicket.pageStore.DefaultPageStore.storePage(DefaultPageStore.java:146)
>    at
> org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.storeTouchedPages(PageStoreManager.java:383)
>    at
> org.apache.wicket.page.RequestAdapter.commitRequest(RequestAdapter.java:171)
>    at
> org.apache.wicket.page.AbstractPageManager.commitRequest(AbstractPageManager.java:94)
>    at
> org.apache.wicket.page.PageManagerDecorator.commitRequest(PageManagerDecorator.java:68)
>    at
> org.apache.wicket.page.PageAccessSynchronizer$2.commitRequest(PageAccessSynchronizer.java:281)
>    at org.apache.wicket.Application$2.onDetach(Application.java:1598)
>    at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:99)
>    at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection$3.notify(RequestCycleListenerCollection.java:97)
>    at
> org.apache.wicket.util.listener.ListenerCollection$1.notify(ListenerCollection.java:119)
>    at
> org.apache.wicket.util.listener.ListenerCollection.reversedNotify(ListenerCollection.java:143)
>    at
> org.apache.wicket.util.listener.ListenerCollection.reversedNotifyIgnoringExceptions(ListenerCollection.java:113)
>    at
> org.apache.wicket.request.cycle.RequestCycleListenerCollection.onDetach(RequestCycleListenerCollection.java:95)
>    at
> org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:600)
>    at
> org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:539)
>    at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:287)
>    at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
>    at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218)
>    at
> com.fredhopper.controller.dashboard.DashboardApplicationFilter.doFilter(DashboardApplicationFilter.java:51)
>    at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>    at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>    at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>    at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>    at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>    at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>    at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>    at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>    at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
>    at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>    at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
>    at java.lang.Thread.run(Thread.java:722)
> Caused by: java.io.NotSerializableException: com.my.T
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
>    at java.util.ArrayList.writeObject(ArrayList.java:710)
>    at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>    at java.lang.reflect.Method.invoke(Method.java:601)
>    at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
>    at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
>    at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>    at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
>    at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
>    at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>    at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
>    at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
>    at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
>    at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
>    at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
>    at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
>    at
> org.apache.wicket.serialize.java.JavaSerializer$CheckerObjectOutputStream.writeObjectOverride(JavaSerializer.java:250)
>    ... 34 more
>
> As far as I've tracked down the problem, the class WildCardListModel
> assumes that in the method createSerializableVersionOf it can create a
> serializable version of a List of T which is not correct. In general this
> is harmless for my application. Now, my question is that if there is a way
> to configure Wicket to suppress this exception? Or, what is the best way to
> deal with this issue?
>
> As a side note, I cannot make neither S nor T serializable at this moment.
>
> Thank you in advance,
> Behrooz Nobakht



-- 
thank you,

regards,
Vineet Semwal

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org