axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Eckoldt (JIRA)" <>
Subject [jira] Commented: (AXIS2-939) Client API does not remove OperationContext instances from configuration context after MEP completes
Date Mon, 31 Jul 2006 13:44:14 GMT
    [ ] 
Thomas Eckoldt commented on AXIS2-939:

Fix in OutInAxisOperation works fine, but in AddressingBasedDispatcher the problem is not
I think the additional call


is not sufficient as it does not trigger OperationContext.cleanup().
IMO the related part in AddressingBasedDispatcher should be somethink like

               if (operationContext != null) {
                   msgctx.setServiceContext((ServiceContext) operationContext.getParent());
                           ((ServiceContext) operationContext.getParent()).getAxisService());
                   //register message context to trigger cleanup in operation context map

                   msgctx.getAxisOperation().registerMessageContext(msgctx, operationContext);
                           ((ServiceGroupContext) msgctx.getServiceContext().getParent()).getId());

> Client API does not remove OperationContext instances from configuration context after
MEP completes
> ----------------------------------------------------------------------------------------------------
>                 Key: AXIS2-939
>                 URL:
>             Project: Apache Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: client-api
>    Affects Versions: 1.0
>            Reporter: Thomas Eckoldt
> I'm using the ServiceClient class to make SOAP calls to a web service provider. The used
MEP is OUT-IN, transport is HTTP. In case of a synchronous single transport operation, AxisOperation.registerOperationContext()
is called twice, once for the outgoing message (request) and once for the incoming message
(response). Each message will have a unique message id assigned. AxisOperation.registerOperationContext()
calls ConfigurationContext.registerOperationContext() with the message id as argument. This
means the OperationContext is stored in the operation context map with the message id as key
and it means, if this method is called twice, you will end with two entries in the map. Only
one (the last) will be removed from the map by OperationContext.cleanup(). 
> Another case is for asynchronous dual transport operations using WS-A. For the outgoing
message everything is fine, the OperationContext is registered in the map and contains the
MessageContext for the outgoing message. But when the response is received, the AddressingBasedDispatcher
class does not register the message context in the operation context (in method invoke()).
This means the operation context contains only the OUT-MessageContext, not the IN-MessageContext
and will never be removed from the context operation map. 

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message