axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject [jira] Assigned: (AXIS-1335) MessageContext.setMessage() clashes with JAX-RPC Handler behavior
Date Sun, 06 Jun 2004 05:56:53 GMT
Message:

   The following issue has been re-assigned.

   Assignee: Davanum Srinivas (mailto:dims@yahoo.com)
---------------------------------------------------------------------
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: Sat, 5 Jun 2004 10:55 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


Mime
View raw message