axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dobri Kitipov (JIRA)" <j...@apache.org>
Subject [jira] Created: (AXIS2-4114) Problem to retrieve the effective policy from MessageContext when we have policy attachment at binding level
Date Fri, 31 Oct 2008 14:41:44 GMT
Problem to retrieve the effective policy from MessageContext when we have policy attachment
at binding level
------------------------------------------------------------------------------------------------------------

                 Key: AXIS2-4114
                 URL: https://issues.apache.org/jira/browse/AXIS2-4114
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: kernel
            Reporter: Dobri Kitipov


Hi,
I have a problem when I try to get the effective policy from a MessageContext when I have
a policy attached at the binding level of a Web Service. I am using Axis2 1.4.0
Let me explain a little bit the scenario I have. I am using an AAR that has into its services.xml:

<parameter name="useOriginalwsdl">true</parameter>

and a PolicyAttachment at its service level:

<wsp:PolicyAttachment xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
            <wsp:AppliesTo>
                <policy-subject identifier="binding:soap11"/>
                <policy-subject identifier="binding:soap12"/>
            </wsp:AppliesTo>
            <wsp:Policy wsu:Id="User" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">...
</wsp:PolicyAttachment>

As a result the WSDL generated has the policy specified and policy reference at the binding
subject level. Here is an excerpt from the wsdl for the SOAP11Binding:

<wsdl:binding name="MTOMServiceSOAP11Binding" type="tns:MTOMServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsp:PolicyReference URI="#User"/>

At client side I have a dynamic client. So the issue is that when I invoke the service and
the WSDL is read and the corresponding AxisService object is crated at the client side I have
some modules' handlers that take palce. One of them is a custom one in which I have the following
invocation:

Policy policy = msgCtx.getEffectivePolicy();

The problem is that this returns "null"! I debugged this and it came out that msgCtx is not
null. When the method is invoked it tries to calculate the effective policy as given below.

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

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

where bindingMessage  is null and axisMessage.getEffectivePolicy(); returns null, too. When
I dig through the AxisService -> AxisEndpoint -> AxisBinding -> here the PolicySubject
is in fact a PolicyReference to the Policy that is set into the AxisService policyMap. So
as a result axisMessage.getEffectivePolicy() returns null and I can not get the Policy I need.
I saw that I need something like the AxisDescription.getApplicablePolicy in order to locate
the real Policy of a given PolicyReference.
You can see the patch applied that I have tested and seem to me that works fine.


Thank you in advance,
Dobri

-- 
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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message