I approached the subject and have a solution for all but one thing: the automatic continuations timeout. Right now this is simple: one treemap to store them all :). Now there are 2 solutions to do such thing when there is one a separate continuations structure for each session:Leszek Gawron wrote:
Sylvain Wallez wrote:
<snip/>
Well, IMO the only clean way to achieve this is to have a continuations manager that automatically binds new continuations to the current session, thus making fully isolated continuation groups.
I proposed this some time ago [1] for other purposes but hadn't the time up to now to actually write it. Want to write it?
If you gave me a few hints what should be changed - I will do it.
Well I started by looking at the CurrentContinuationManagerImpl which is a bit complicated. Maybe writing a new one from scratch would be easier.
The idea is to store in the session a data structure that holds the continuations related to the session. This data structure should hold a counter used to create per-session continuation id, and it should also implement HttpSessionBindingListener so that all continuations get properly deleted whenever the continuation expires. Of course, individual continuations should still have their own expiration management.
- one task running on timer and removing expired continuations this solution requires that the task have to be able to access ALL sessions on server to query for continuations structure.
- one task running on timer per session looks like a simpler solution but might cause bigger server load.
I'm not much of avalon expert. What should I do to make an avalon component also a session listener?
my regards
-- Leszek Gawron [EMAIL PROTECTED]
