You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Peter Gardfjäll <pe...@gmail.com> on 2011/11/10 17:19:47 UTC

Custom ISerializer being used during serialization but _not_ during deserialization

Hi all,

in my application I register a custom ISerializer implementation in the
WebApplication.init() method as follows:

      @Override
    protected void init() {
        super.init();
        getFrameworkSettings().setSerializer(new
MySerializer(getApplicationKey()));
        ...

This works as expected during page serialization (that is, my custom
ISerializer.serialize() implementation gets called).
However, it seems as though my ISerializer is _not_ being used during page
deserialization, as can be seen in the error trace below.
As can be seen in the stack trace, the default
*org.apache.wicket.serialize.java.JavaSerializer.deserialize()
method is being called.

Am I doing anything wrong when setting up my custom ISerializer or is
Wicket failing to honor my framework settings?

best regards, Peter

*
java.lang.RuntimeException: Could not deserialize object using: class
org.apache.wicket.serialize.java.JavaSerializer$ClassResolverObjectInputStream
* at
org.apache.wicket.serialize.java.JavaSerializer.deserialize(JavaSerializer.java:137)
*
at
org.apache.wicket.pageStore.DefaultPageStore.deserializePage(DefaultPageStore.java:388)
at
org.apache.wicket.pageStore.DefaultPageStore.getPage(DefaultPageStore.java:127)
at
org.apache.wicket.page.PageStoreManager$SessionEntry.getPage(PageStoreManager.java:192)
at
org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.getPage(PageStoreManager.java:327)
at
org.apache.wicket.page.AbstractPageManager.getPage(AbstractPageManager.java:102)
at
org.apache.wicket.page.PageManagerDecorator.getPage(PageManagerDecorator.java:50)
at
org.apache.wicket.page.PageAccessSynchronizer$2.getPage(PageAccessSynchronizer.java:232)
at
org.apache.wicket.DefaultMapperContext.getPageInstance(DefaultMapperContext.java:117)
at
org.apache.wicket.request.handler.PageProvider.getStoredPage(PageProvider.java:292)
at
org.apache.wicket.request.handler.PageProvider.isNewPageInstance(PageProvider.java:205)
at
org.apache.wicket.request.mapper.AbstractBookmarkableMapper.mapHandler(AbstractBookmarkableMapper.java:339)
at
org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:156)
at
org.apache.wicket.protocol.https.HttpsMapper.mapHandler(HttpsMapper.java:125)
at
org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:401)
at
org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:146)
at
org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
at
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:750)
at
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:252)
at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:209)
at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:280)
at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)

Re: Custom ISerializer being used during serialization but _not_ during deserialization

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

That's all you need to do to configure your custom ISerializer.
DefaultPageStore uses the same instance for serialization and deserialization.
Each user session has its own instance of IPageManager that keeps an
instance of IPageStore. See
org.apache.wicket.DefaultPageManagerProvider.newPageStore(IDataStore)

I don't see how different ISerializer impls can be used.

2011/11/10 Peter Gardfjäll <pe...@gmail.com>:
> Hi all,
>
> in my application I register a custom ISerializer implementation in the
> WebApplication.init() method as follows:
>
>      @Override
>    protected void init() {
>        super.init();
>        getFrameworkSettings().setSerializer(new
> MySerializer(getApplicationKey()));
>        ...
>
> This works as expected during page serialization (that is, my custom
> ISerializer.serialize() implementation gets called).
> However, it seems as though my ISerializer is _not_ being used during page
> deserialization, as can be seen in the error trace below.
> As can be seen in the stack trace, the default
> *org.apache.wicket.serialize.java.JavaSerializer.deserialize()
> method is being called.
>
> Am I doing anything wrong when setting up my custom ISerializer or is
> Wicket failing to honor my framework settings?
>
> best regards, Peter
>
> *
> java.lang.RuntimeException: Could not deserialize object using: class
> org.apache.wicket.serialize.java.JavaSerializer$ClassResolverObjectInputStream
> * at
> org.apache.wicket.serialize.java.JavaSerializer.deserialize(JavaSerializer.java:137)
> *
> at
> org.apache.wicket.pageStore.DefaultPageStore.deserializePage(DefaultPageStore.java:388)
> at
> org.apache.wicket.pageStore.DefaultPageStore.getPage(DefaultPageStore.java:127)
> at
> org.apache.wicket.page.PageStoreManager$SessionEntry.getPage(PageStoreManager.java:192)
> at
> org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.getPage(PageStoreManager.java:327)
> at
> org.apache.wicket.page.AbstractPageManager.getPage(AbstractPageManager.java:102)
> at
> org.apache.wicket.page.PageManagerDecorator.getPage(PageManagerDecorator.java:50)
> at
> org.apache.wicket.page.PageAccessSynchronizer$2.getPage(PageAccessSynchronizer.java:232)
> at
> org.apache.wicket.DefaultMapperContext.getPageInstance(DefaultMapperContext.java:117)
> at
> org.apache.wicket.request.handler.PageProvider.getStoredPage(PageProvider.java:292)
> at
> org.apache.wicket.request.handler.PageProvider.isNewPageInstance(PageProvider.java:205)
> at
> org.apache.wicket.request.mapper.AbstractBookmarkableMapper.mapHandler(AbstractBookmarkableMapper.java:339)
> at
> org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:156)
> at
> org.apache.wicket.protocol.https.HttpsMapper.mapHandler(HttpsMapper.java:125)
> at
> org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:401)
> at
> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:146)
> at
> org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:750)
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:252)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:209)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:280)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

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