[ https://issues.apache.org/jira/browse/AXIS2-4114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12650210#action_12650210 ]
Detelin Yordanov commented on AXIS2-4114: ----------------------------------------- Hi guys, It happens that in some cases the "axisOperation" field in the MessageContext is null, which causes a NPE in getApplicablePolicy() when trying to get the operation's name. This occurred by me when trying to execute the "RahasSAMLTokenV1205Test" test case from the rampart-integration module. I examined it and found out that the request dispatcher could identify the service (SecureService in this case), but could not identify the operation to execute (issue). The problem seems to be that the action mapping of the Rahas module for the Issue operation is: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue (see rahas module.xml) while the action set on the client is: http://docs.oasis-open.org/ws-sx/ws-trust/200512 (see RahasSAMLTokenV1205Test#getRequestAction()) Since these are obviously different, the SOAPActionBasedDispatcher does not find the operation to invoke and thus the MC's axisOperation remains null. It is interesting that without this patch the test case runs successfully. Nandana, do you have an idea why this happens? > 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 > Assignee: Nandana Mihindukulasooriya > Attachments: MessageContext_effectivePolicy.patch > > > 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]