axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dobri Kitipov" <>
Subject Problem to retrieve the effective policy from MessageContext when we have <wsp:PolicyAttachment/> into the services.xml
Date Thu, 30 Oct 2008 12:59:37 GMT
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="">
                <policy-subject identifier="binding:soap11"/>
                <policy-subject identifier="binding:soap12"/>
            <wsp:Policy wsu:Id="User" xmlns:wsp="" xmlns:wsu="">...


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

<wsdl:binding name="MTOMServiceSOAP11Binding"
<soap:binding style="document" transport=""/>
<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 =

         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
I saw that I need something like the AxisDescription.getApplicablePolicy in
order to locate the real Policy of a given PolicyReference.
Is that the correct behavior?

Can you please give me some more information how should I get the policy
attached at the binding level in my handler?

Thank you in advance,

View raw message