axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Algirdas P. Veitas" <avei...@allesta.com>
Subject Re: [jira] Commented: (AXIS-1335) MessageContext.setMessage() clashes with JAX-RPC Handler behavior
Date Wed, 07 Jul 2004 04:02:06 GMT
Unfortunately, fixing 1310 will not alleviate the problem we see below.
Basically, when using a JAX-RPC Handler there is no way to tell Axis that
you "havePastPivot".  Thus, if you set a fault message in the soap context
and return false from your handler it does not do the right thing (i.e. act
like it has past the pivot).

The original code will display this result (assuming 1310 has been fixed in
the codebase you are using).

Thanks,
    Al

----- Original Message -----
From: <axis-dev@ws.apache.org>
To: <aveitas@allesta.com>
Sent: Tuesday, July 06, 2004 8:05 PM
Subject: [jira] Commented: (AXIS-1335) MessageContext.setMessage() clashes
with JAX-RPC Handler behavior


> The following comment has been added to this issue:
>
>      Author: Davanum Srinivas
>     Created: Tue, 6 Jul 2004 8:03 PM
>        Body:
> If we fix AXIS-1310. Will it fix your problem?
>
> thanks,
> dims
> ---------------------------------------------------------------------
> View this comment:
>
http://issues.apache.org/jira/browse/AXIS-1335?page=comments#action_36536
>
> ---------------------------------------------------------------------
> 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, 6 Jul 2004 8:03 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