Thoughts?
---------- Forwarded message ----------
From: Gavin King <gavin.king(a)gmail.com>
Date: Sat, May 30, 2009 at 1:31 PM
Subject: Re: [webbeans-dev] conversation context lifecycle
To: Java Community Process JSR #299 Expert List <JSR-299-EG(a)jcp.org>
On Sat, May 30, 2009 at 12:43 PM, Gavin King <gavin.king(a)gmail.com> wrote:
> Looking at the Conversation public API I don't see any
programmatic
> way to restore a conversation. Perhaps we should add such an API?
Ugh, I really didn't want to go there in this release, though it
would, very clearly, be a very useful feature.
If we were going to go there, the way I would do it is to say that the
conversation context is defined for all servlet requests, but it is by
default transient. The container would be required to call back to
Extensions to obtain a conversation id.
Actually, upon reflection, I think we need to do this :-/
Because even in JSF, we want a way to customize the mechanism for
conversation propagation.
So we could say that an Extension may optionally implement this interface:
public interface ConversationExtension {
String getConversationId(HttpServletRequest request,
ServletContext context);
}
And say that before any Filter is called, the container calls all
ConversationExtensions looking for a conversation id, and if it finds
one, restores the conversation.
Alternatively, we could say that the conversation is only restored
*after* all ServletFilters have been called, and say that the
container looks in a specially-named request attribute, for example
"javax.contexts.spi.conversationId". Then we would not need a special
interface, and any servlet filter could do conversation management.
This seems more elegant, but means you don't get a conversation
context in your filters.
WDYT?
--
Gavin King
gavin.king(a)gmail.com
http://in.relation.to/Bloggers/Gavin
http://hibernate.org
http://seamframework.org
--
Gavin King
gavin.king(a)gmail.com
http://in.relation.to/Bloggers/Gavin
http://hibernate.org
http://seamframework.org