Hi,
I have been thinking of this problem as well. It's not realistic to search
for all CallableReferences because it can be dynamically created too. We
probably need to use a listener pattern to have all the Conversation objects
listen on the events of expiration or end of the conversation and reset the
state based on the event. Another way is to have a pointer to the
ScopeContainer in the ConversationImpl object and query the state of the
conversation before it's used.
By the current design, the ConversationScopeContainer is per component to
keep implementation instances by conversation id. So when the same
conversation involves two components, there are two
ConversationScopeContainer instances.
Thanks,
Raymond
----- Original Message -----
From: "Simon Laws" <[EMAIL PROTECTED]>
To: "tuscany-dev" <[email protected]>
Sent: Sunday, September 09, 2007 4:15 AM
Subject: Resetting state of service references at conversation end
When @ConversationEnd is called on a satefull callback the conversation id
of the client reference is not reset back to null. I have put a fix in in
the case where the scope of the originating component is CONVERSATION.
This
relies on storing the Conversation object in the conversational scope
container so that when the instance is marked for removal the conversation
id can be set to null also.
However to make this approach work for all scopes I have to go and add
this
feature to the other scope containers. Before I do this is there an easy
way
to get to all of a component instances CallableReferences from the
JavaImplementationInvoker? If there were I could search for the
conversation
object with the matching conversationId rather than adding extra code to
store it away.
Simon
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]