On Wed, Jan 14, 2009 at 1:29 AM, Ville Virtanen <ville.virta...@cerion.fi>wrote:

> I would try to achieve something like that using:
> Custom PersistentFieldStrategy
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/PersistentFieldStrategy.html
> )
> Custom LinkFactoryListener
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/internal/services/LinkFactoryListener.html
> )
> Custom ComponentEventRequestFilter + PageRenderRequestFilter
> (
> http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/services/ComponentEventRequestFilter.html
> )
>

Moi moi Ville,

thanks for the links. A custom PersistentFieldStrategy is certainly
something I'm currently looking into.


> Then in theory you can code the conversation id to all links and forms, use
> the filters to intercept the request and get the id back and finally use
> the
> id to retrieve the value from ConversationManager via the CustomPersistence
> strategy. The persistence strategy may use ehcache or something like that
> to
> actually persist the objects. The request object can be used to transmit
> the
> conversation id from the filter to the persistence strategy?


I think its a minor detail whether the id is part of the url a parameter.
EHCache doesn't really come to play, I actually want to keep the
conversation as part of the session (you log out, it'll end all
conversations). In my view, users would have lots of short-lived
conversations going on, each using session but so they don't step on each
other.

This implementation could also be per client tab and not at all dependent of
> the session etc.


>From my opinion, a session is one of the biggest things going for Java
webapps compared to two-tier db-backed architectures like PHP, we just have
to learn to use it the right way.

Kalle



> Kalle Korhonen-2 wrote:
> >
> > I don't know if there's a better thread for discussing page scope and
> > conversation (if you know other threads, please link them in) but I'm
> just
> > doing research on this topic for supporting conversations in Trails.
> > Shortly, I'm hoping that it'd be possible to have a generic
> implementation
> > for conversations by dictating that a conversation should always happen
> on
> > a
> > single "page" or url with asynchronous calls. From my point of view,
> > assuming that only the beginning of a conversation can be bookmarkable
> and
> > that a conversation has one-to-one mapping with a url are reasonable
> > conventions and will greatly simplify the required logic (compared to
> > xml-based navigation flow configurations). These conversations could also
> > be
> > cleaned from session before the session expires and can have individual
> > timeout values.
> >
> > Regarding the problem with multiple pages that others have already
> pointed
> > out, with or without using cookies the urls need to be different (so the
> > page contexts can be kept separate). Typically when editing a single
> > object,
> > you don't even want to allow multiple windows and this can be easily
> dealt
> > with cookies transparently to the user. The only good example of where
> > multi-window support is actually useful that I can come up with is search
> > (say when you are trying to find the best flight to a destination).
> There,
> > I
> > wouldn't even like to necessary have a conversation identifier as part of
> > the url, but as a parameter (e.g. /travelsearch?conversationId=123) since
> > it's not meaningful to bookmark a url with a conversationId in it, but T5
> > doesn't allow one to easily manipulate urls and the page context is
> > extremely handy way of making sure all subsequent action requests (from
> > the
> > same page) are participating in the same conversation. However, one of
> the
> > issues with T5 I haven't been able to satisfactorily solve is forcing a
> > page
> > to use an additional context parameter. I've tried with returning the
> same
> > page from onActivate then setting a conversation id in onPassivate, which
> > works in principle but only if I persist the conversation id which kind
> of
> > defies the point. Anybody happen to have a good, generic solution for
> > automatically adding parameters to the activation context (so they are
> > visible in the url)? I'd be also interested to know if anybody has
> > thoughts
> > on these ideas or is further along in providing a generic implementation
> > for
> > conversations in T5.
> >
> > Kalle
> >
> >
> > On Fri, Dec 12, 2008 at 11:00 AM, Daniel Jue <teamp...@gmail.com> wrote:
> >
> >> In the past I manually implemented this behavior by mixing server side
> >> and
> >> client side persistence.  My code-fu was probably not very elegant.
> >>
> >> In my case, a user could open a report page after filling out a page of
> >> variables.  These report pages would open in a new browser window/tab.
> So
> >> instantly you have the situation where two reports can be open but use
> >> different data.  I would store a client side string on each report page,
> >> and
> >> LRU hash map on the ASO side would match it to the relative data, just
> >> before the report was run and a new page opened.  If it was in the LRU,
> I
> >> could grab the cached report.  If not, I still had enough information to
> >> run
> >> the report again.  If the report page needed to be refreshed (such as
> >> sorting something on the page, non-async), the client side key would
> look
> >> up
> >> the data.
> >>
> >> I used a small LRU limit (like 5) to keep the size down.
> >>
> >> Daniel
> >>
> >> On Fri, Nov 28, 2008 at 10:18 PM, thermus <msch...@gmail.com> wrote:
> >>
> >> >
> >> > I'm interested in this as well.  Specifically if a user has two page
> >> > instances open, how can T5 persistence be used reliably?
> >> >
> >> > I found on Safari and Firefox (not sure about IE, but likely a problem
> >> > there
> >> > as well) that the persisted session properties are shared between page
> >> > instances and each page can overwrite the another.  My searches didn't
> >> come
> >> > up with a definitive answer although I did see that the question has
> >> been
> >> > asked several times.  Can anyone comment on this or provide a
> >> workaround?
> >> >
> >> >
> >> >
> >> > Peter Stavrinides wrote:
> >> > >
> >> > > ... but what would be ideal in my humble view is a proper page
> >> > persistence
> >> > > Strategy, where a value is retained until the user leaves the page.
> >> In
> >> > > truth someone posted such a solution which used a cookie, and it
> >> seemed
> >> > to
> >> > > behave exactly as it should, nevertheless I am still against relying
> >> on
> >> a
> >> > > cookie. I understand this may be difficult to implement due to
> >> Tapestry's
> >> > > inner workings, particularly the way pages are pooled, but since
> >> > > conversational state covers some of this ground (the difference
> being
> >> a
> >> > > conversation is tied to not only the page, but the window so each
> tab
> >> is
> >> > > treated as a new conversation)...
> >> > >
> >> >
> >> > --
> >> > View this message in context:
> >> > http://www.nabble.com/Persistance-tp20732003p20743522.html
> >> > Sent from the Tapestry - User mailing list archive at Nabble.com.
> >> >
> >> >
> >> > ---------------------------------------------------------------------
> >> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >> > For additional commands, e-mail: users-h...@tapestry.apache.org
> >> >
> >> >
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Persistance-tp20732003p21452575.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to