[ 
https://issues.apache.org/jira/browse/TUSCANY-1511?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jean-Sebastien Delfino updated TUSCANY-1511:
--------------------------------------------

    Fix Version/s:     (was: Java-SCA-Next)
                   Java-SCA-1.0

> Conversational - spec funnies and other improvements
> ----------------------------------------------------
>
>                 Key: TUSCANY-1511
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1511
>             Project: Tuscany
>          Issue Type: Improvement
>          Components: Java SCA Core Runtime
>         Environment: All
>            Reporter: Simon Laws
>             Fix For: Java-SCA-1.0
>
>
> We closed http://issues.apache.org/jira/browse/TUSCANY-1377 when we got to 
> the stage where conversation support was basically back up and running. There 
> are still some outstanding issues recorded against that report that come down 
> to lack of clarity in the spec and/or are awaiting other bits of the Tuscany 
> runtime to be completed. Here is the list so far.
> Features Currently Supported
> -------------------------------------------
>                                                         
> @Conversational - service & callback interfaces
> @Scope(CONVERSATION)
> @Scope(STATELESS)
> @Init
> @Destroy
> @ConversationAttributes(maxAge="2 days",
>                                                maxIdleTime="5 minutes" )
> @ConversationId
> @EndsConversation - service and callback interfaces
> ServiceReference
>        getConversationID()
>        setConversationID(Object)
> CallableReference (can be persisted,can be passed)
>        isConversational()
>        getConversation()
> Conversation
>        getConversationID()
>        end()
>     ConversationEndedException
> Restrictions And Required Clarifications
> --------------------------------------------------------
> The specification is not clear on a number of points related to Stateful 
> callbacks. 
> 1/ In the current implementation the spec has been interpreted to mean that 
> the "client" component, i.e. the component implementing the callback 
> interface, must be marked as conversational in order that callback messages 
> return to the same instance of the client component that originated the 
> conversational call.  In this case the target of a callback (the source of 
> the original message) has to be stored against a conversationId so that the 
> callback can find it and invoke the callback operation on it. Currently, at 
> the source component, the incoming conversationid is reused for outgoing 
> messages to allow this to happen (the component instance will automatically 
> have been registered against this id when it was created). 
> A better solution would be to allow the reference logic to always create a 
> new conversation id (or accept a user defined conversation id) but, for 
> stateful callbacks this implies that the source component instance has to be 
> registered against multiple conversation ids in the conversational scope 
> container. As pumbing this in is a little tricky we need discuss round 
> alternative solutions.
> 2/ The spec isn't explicit about what happens at the server  when 
> Conversation.end() is used on the target service. In the current 
> implementation it will not free any resources held at the target. A protocol 
> is required between source and target to carry this end() instruction. As it 
> stands the target conversation will eventually time out. Subsequent requests 
> to the target will create a new conversation.
> 3/ @EndsConversation on the target component where a stateful callback is 
> defined will end the callback conversation at the target only, I.e. the 
> component
> instance representing the conversation at the source end will remain in 
> place. It remains until the callback calls an @EndConversation annotated 
> message. This is tricky
> because the source component instance may have been created as part of 
> another conversation which hasn't ended yet. Not clear whether the intention 
> of the spec is to get both to happen at once.
> The specification also talks about the ability to pass round references that 
> refer to ongoing conversations. 
> No passing of services references, referring to conversational services, is 
> currently supported. This is primarily because the service reference is not 
> currently serializeable but
> the spec could also benefit from some clarrification in this area. For 
> example, If a callable reference is passed off to another service how does 
> that callable reference know what the state of the conversation is?
> There are also a few other pieces that are awaiting the completion of other 
> bits of work. 
> @Scope(COMPOSITE) excluded due to ML conversation 
> (http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg20573.html)
> @ConversationAttributes(singlePrincipal=false). Awaiting plicy/security work
> The WS binding is being targetted as the first remote binding with 
> conversation support but this is not complete yet. Awaiting work on callbacks.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to