On Thu, Mar 6, 2014 at 10:08 AM, Tom Götz <t...@decoded.de> wrote:

>
> On 06.03.2014, at 08:39, Martin Grigorov <mgrigo...@apache.org> wrote:
>
> > On Thu, Mar 6, 2014 at 9:29 AM, Tom Götz <t...@decoded.de> wrote:
> >
> >> Hi there,
> >>
> >> I have an application that doesn’t need back-button support and also has
> >> several domain objects that are not meant to be serialized. I thought it
> >> could be a good idea to implement an IPageStore that skips serialization
> >> and simply keeps the last n pages in memory (where n might be 5-10
> e.g.).
> >> Does this sound like a reasonable plan or do you see any pitfalls with
> that
> >> approach?
> >>
> >
> > Where you will store the pages ?
> > I guess you will put them in the Session. Be aware that the Wicket
> Session
> > is stored as an attribute in the Http session. You will need custom
> > ISessionStore if you want to avoid this. If you put non-Serializable
> > objects in the http session then you have to make sure the http session
> is
> > not replicated by your web container.
>
> Can’t I simply use an own cache (map), just like DefaultPageStore does it
> with SerializedPagesCache? With the only difference that I do not serialize
> the pages …!?
>

This is the second level cache as described at
https://cwiki.apache.org/confluence/display/WICKET/Page+Storage.
It is with application scope and uses smarter type of a map that expires
entries when overloaded and on timeout.

You can do the same. Just be aware of these details because otherwise you
will need to cleanup on session expiration.


>
>
> >> What about ajax requests (I’m using a lot of them)? Let’s say n=5, i.e.
> >> I’m storing (only) the last 5 pages in memory, without serialization to
> >> disk. I start a page, pageId==1, then I’m doing 10 ajax requests on the
> >> page. Now when the user does a page reload, will he run into a
> >> PageExpiredException because the requested page with id=1 is not
> available
> >> any more in my pageStore?
> >>
> >
> > This is not how it works!
> > Initially you store page with id X. In Ajax requests the pageId is not
> > incremented, so after Ajax request the old page instance will be
> overridden
> > by the new one (the one with the modifications done in the ajax request)
> > because it has the same pageId.
> > So in your example when the user does page reload (s)he will see the last
> > version of the page, i.e. the state after the last Ajax request. All
> > previous states will be gone.
> >
> > All this is valid only if you use the same composite key for the page
> store
> > - sessionId+pageId.
>
> Ok, thanks for clarification on that point!
>
> Cheers,
>    -Tom
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to