Externalization: Activation problem with OperationContext leads to out of 
memory condition
------------------------------------------------------------------------------------------

                 Key: AXIS2-3180
                 URL: https://issues.apache.org/jira/browse/AXIS2-3180
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: kernel
            Reporter: Rich Scheuerle
            Assignee: Rich Scheuerle
            Priority: Minor


This problem only affects scenarios that persist the Operation Context (i.e. 
WS-RM).

After a externalized OperationContext is read, it is activated.  Activation 
associates the OperationContext with the current runtime contexts 
(ConfigurationContext).

If the MEP of the OperationContext is inbound, the OperationContext is added to 
the ConfigurationContext and never removed.

The solution is to only re-register the OperationContext if it is outbound.  In 
these cases, the OperationContexts are cleaned up when a response is received.

A simple solution is provided by Bill Nagy.  The OperationContext.activate(...) 
code is changed to only register the OperationContext if it is an "out" MEP.

// We only want to (re)register this if it's an outbound message
            String mepString = getAxisOperation().getMessageExchangePattern();
            if (mepString.equals(WSDL20_2006Constants.MEP_URI_OUT_ONLY)
                || mepString.equals(WSDL20_2004_Constants.MEP_URI_OUT_ONLY)
                || ((mepString.equals(WSDL20_2006Constants.MEP_URI_OUT_IN)
                    || mepString.equals(WSDL20_2004_Constants.MEP_URI_OUT_IN))
                    && !isComplete)) {
                    
                // make sure this OperationContext object is registered in the 
                // list maintained by the ConfigurationContext object
                boolean registrationSuceeded = 
activeCC.registerOperationContext(key, this, true);
                if (!registrationSuceeded) {
                    // trace point
                    log.trace(logCorrelationIDString + ":activate():  
OperationContext key [" + key
                              + "] already exists in ConfigurationContext map.  
This OperationContext ["
                              + this.toString() + "] was not added to the 
table.");
                }
            }


I will commit this fix after running some more tests.




-- 
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