You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ax...@ws.apache.org on 2004/10/06 02:59:33 UTC

[jira] Commented: (AXIS-1335) MessageContext.setMessage() clashes with JAX-RPC Handler behavior

The following comment has been added to this issue:

     Author: Shantanu Sen
    Created: Tue, 5 Oct 2004 5:58 PM
       Body:
This has most likely been fixed by the patch that I submitted for AXIS-1513. That patch has been applied in the 1.2RC1 dist.
---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/AXIS-1335?page=comments#action_53735

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/AXIS-1335

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: AXIS-1335
    Summary: MessageContext.setMessage() clashes with JAX-RPC Handler behavior
       Type: Bug

     Status: Open
   Priority: Major

    Project: Axis
 Components: 
             Basic Architecture

   Assignee: Davanum Srinivas
   Reporter: Algirdas Veitas

    Created: Sat, 24 Apr 2004 12:49 PM
    Updated: Tue, 5 Oct 2004 5:58 PM
Environment: Need to apply patch that was submitted in bug #1310

Description:
As per the JAX-RPC specification, when a JAX-RPC Handler returns a value "false" from handleRequest, it is the responsibility of the Handler to set the appropriate response message, during the invocation of handleRequest.  See below for relevant specification documentation.  If I am misinterpreting, please let me know!! 

With that said, a JAX-RPC Compliant handler used within Axis cannot achieve the desired results in this scenario.  When the handle calls
setMessage(SOAPMessage) to set the response message, the actual implementation of MessageContext sets this value to the internal requestMessage because "havePastPivot" is set to false.  The internal method of MessageContext is setCurrentMessage().

The following code snippet and documentaiton explains in more detail.  Full handler is attached.

public boolean handleRequest(MessageContext context) {

    SOAPMessageContext soapMsgContext = (SOAPMessageContext)context;
    SOAPMessage faultMessage = buildFaultMessage();

    // SETTING THE FAULT MESSAGE FOR THE RESPONSE ENVELOPE, HOWEVER
    // SINCE THIS IS A JAX-RPC HANDLER USING AXIS AND
    // org.apache.axis.MessageContext AS A CONCRETE IMPLEMENTATION
    // "havePastPivot" IS SET TO FALSE SO THIS FAULT MESSAGE
    // WILL BE ASSIGNED TO THE REQUEST MESSAGE!!
    soapMsgContext.setMessage(faultMessage);
    return false;
}

// 
public void setCurrentMessage(Message curMsg)
{
   curMsg.setMessageContext(this);

        if (havePassedPivot) {
            responseMessage = curMsg;
        } else {
            requestMessage = curMsg;
        }
    }
}

-- START RELEVANT JAX-RPC 1.1 DOCUMENTATION ----
"Return false to indicate blocking of the request handler chain. In this case, further processing of the request handler chain is blocked and the target service endpoint is not dispatched. The JAX-RPC runtime system takes the responsibility of invoking the response handler chain next with the appropriate SOAPMessageContext. The Handler implementation class has the responsibility of setting the response SOAP message in the handleRequest method and perform additional processing in the handleResponse method. In the default processing model, the response handler chain starts processing from the same Handler instance (that returned false) and
goes backward in the execution sequence."
-- END RELEVANT JAX-RPC 1.1 DOCUMENTATION ----



---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira