If you just override removeEldestEntry() on LinkedHashMap, you'll get LRU behaviour. You can subclass it and set a max capacity, and LRU if you've hit capacity. Not a heavy implementation, but it might reduce a dependency if you're only importing commons-collections for the LRU.

christian.

On 30-Nov-07, at 8:34 AM, Daniel Jue wrote:

I have a primitive caching implementation that I like to think of as a
"conversation", even though it is not comparable to the kinds of
persistence methods you guys are talking about.

Mine involves storing large computed data in the User's ASO (such as a
report data structure with it's data).  Inside the User's ASO, I have
a LRU Hashmap (copied one off the net) that acts as the cache.
I use very unsophisticated but unique keys, which are the SQL used to
generate that specific report data.  The LRU has an upper limit (like
5), and for the 6th report run by that user, it just forgets the one
that has been least used.  I have a common page to display all
reports, and that page checks the User's LRU cache before trying to
execute a 30 second SQL request.
Before the report page is called, I copy some data from the user's
selections into the new page instance.  That data uses regular
@Persist.  From that data, the page can calculate the key (the SQL)
and then check for cached data OnSetup.  So this works for up to (n=5)
windows, and it's snappy if the same report has been recently run by
the user.
Wow it sounds a lot more complicated-but-elementary when I write it out.

Come to think of it--I should just @Persist the key value, which is
smaller than the all the setting data used to construct the key.

PS-- if you see something very wrong about this picture, please let me know!

Daniel Jue


On Nov 29, 2007 8:01 PM, Kalle Korhonen <[EMAIL PROTECTED]> wrote:
Of course, nothing prevents one writing a semi-automatic workspace
management layer on top of Seam that would take care of detecting and
closing abandoned conversations (for example, along the lines I suggested on the Trails list). The Seam guys have carefully removed any dependencies to JSF. In practice, integrating Tap5 with Seam might be the fastest way of getting practical results for a conversational scope, and wouldn't solve
only one but two problems at the same time (conversations and
session-per-conversation), of course at the expense of tying the
implementation more closely with Hibernate or at least JPA, but that's probably what the majority is using anyway. I'm sure the Seam guys would love to see Tapestry support for Seam. And btw, Wicket guys have already done this. Given that you Geoff are probably inclined to use J2EE container
anyway, wouldn't it make sense to you to start looking at creating
tapestry-seam integration project? It might be an interesting project to
take on for me as well.

Kalle



On 11/28/07, Kalle Korhonen <[EMAIL PROTECTED]> wrote:

I completely agree with Geoff that a good-enough generic support for
conversations could make developing web applications much easier and it's one of the remaining big issues that web frameworks typically don't offer a solution for out-of-the-box. Seam's got a solution that works well for typical enterprise apps that may have high amount of interaction with the database but don't have a huge number of users. While Seam ignores the problem of closing abandoned conversations, it'll quickly lead to much higher memory consumption as open conversations generally occupy memory
until explicitly closed or the session is expired.

There's been various tries at solving the conversation support for
Tapestry and we are planning on supporting conversation in Trails with a tighter memory management model for better scalability. I've written some
notes on session-per-conversation at
http://archive.trails.codehaus.org/users/[EMAIL PROTECTED]'s relevant for this discussion as well. For Tap5, you can of course come up with your own solution, but it'd be great if the framework had a generic support for conversations that would work well enough in the most
common cases out-of-the-box and could be extended.

Kalle


On 11/28/07, Thiago HP <[EMAIL PROTECTED]> wrote:

On 11/28/07, Francois Armand <[EMAIL PROTECTED]> wrote:

I completely agree with your remarks, and it's a kind of pity that T5
is
such in advance in so many areas, and in the same time have to deals
by
hand with that.


Let's not forget that Tapestry 5 is still alpha and there are other
areas
needing work too, AJAX being one of the most anticipated ones. In
addition,
it has a very flexible architecture that allows developers (Howard,
other T5
comitters or me or you) to implement any missing feature. ;)

Thiago





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to