Hi Gary,

see the inline comments.

On Thu, Jul 31, 2008 at 7:49 AM, Gary Snider <[EMAIL PROTECTED]>wrote:

> Can someone tell me how axis2 is supposed to find the operation in this
> case:
>
> 1) empty SOAPAction http header (per ws bsp 1.0)
> 2) no wsa:action because our services don't want ws-addressing
> 3) soap body is encrypted so axis2 SOAPMessageBodyBasedDispatcher won't
> help
> there
> 4) uri has no operation on it either
>
> So I was hoping that Rampart would be invoked during the Security phase and
> it would be able to decrypt the body so that the
> SOAPMessageBodyBasedDispatcher would find the operation but there is an
> issue there as well.  I eventually get the following soap fault:


The reason for this the behavior of MessageContext#getEffectivePolicy().
When the message comes to Rampart the service is correctly dispatched but
not the operation. So the AxisOperation and AxisMessage is still null. If we
look at MessageContext#getEffectivePolicy()

    public Policy getEffectivePolicy() {
        if (LoggingControl.debugLoggingAllowed) {
            checkActivateWarning("getEffectivePolicy");
        }

        AxisBindingMessage bindingMessage =
            (AxisBindingMessage)
getProperty(Constants.AXIS_BINDING_MESSAGE);

        if (bindingMessage != null) {
            return bindingMessage.getEffectivePolicy();
        } else {
            if (axisMessage != null) {
                return axisMessage.getEffectivePolicy();
            } else {
                return null;
            }
        }
    }

It depends on the AxisMessage or AxisBindingMessage to be present. So in
this case, we will not get a policy so the message won't be decrypted.
SOAPMessageBodyBasedDispatcher can't find the operation as the message is
still encrypted.

thanks,
nandana

-- 
Nandana Mihindukulasooriya
WSO2 inc.

http://nandana83.blogspot.com/
http://www.wso2.org

Reply via email to