You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Simon Laws (JIRA)" <tu...@ws.apache.org> on 2008/03/17 16:15:24 UTC

[jira] Resolved: (TUSCANY-2088) Incorrect ConversationEndedException:Conversation has expired. on reference

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

Simon Laws resolved TUSCANY-2088.
---------------------------------

       Resolution: Fixed
    Fix Version/s: Java-SCA-1.2

I've put in a change to stop the JDKInvocationHandler testing for conversation timeouts if it has no access to the target service. It needs to check for timeouts if the wire is local and hence does have access to the target service as in this case there will be no RuntimeWoreInvoker. 

I'm going to close this JIRA off and shortly open another one as looking through the conversation functionality now  it seems that our timeout handling is not optimal at present and generally there is complexity in conversation handling that could be reduced. 

> Incorrect  ConversationEndedException:Conversation has expired.  on reference
> -----------------------------------------------------------------------------
>
>                 Key: TUSCANY-2088
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-2088
>             Project: Tuscany
>          Issue Type: Bug
>            Reporter: Lou Amodeo
>            Assignee: Simon Laws
>             Fix For: Java-SCA-1.2
>
>
> I am seeing a problems with an erroneous conversation ended state for references that are not wired directly to services.  The following snippet from JDKInvocationHandler shows 2 issues.  1)  An assumption that there will always be a component wired to a target and 2) That the ConversationAttributes
> which are specified on the service impl are accessible.   In the case of a remote service accessed using binding.ws neither of these are true.  If I revert back to the old way of not handling expiry on the client the conversation behaves as expected. 
>     
> ConversationManager conversationManager = ((RuntimeWireImpl)wire).getConversationManager();
> if (conversation == null || conversation.getState() == ConversationState.ENDED) {
> conversation = conversationManager.startConversation(getConversationID());
>  conversation.initializeConversationAttributes(wire.getTarget().getComponent());
> if (callableReference != null) {
> ((CallableReferenceImpl)callableReference).attachConversation(conversation);
> }
> }
> } else if (conversation.isExpired()) {
> throw new ConversationEndedException("Conversation has expired.");
> }
> conversation.updateLastReferencedTime();  

-- 
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: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org