9 Replies Latest reply: Jul 26, 2012 6:30 AM by Sylvain YVON RSS

Problem consuming a webservice with "mustUnderstand"

dice

Hi,

 

We are on 7.604 SP1 and trying to consume a webservice with a security header. The webservice works in SOAP UI but not when trying to consume.

 

Here's the error AR gives me:

 

2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>Did not understand "MustUnderstand" header(s):{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security

2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARPluginContext (?:?) - <ARSYS.ARF.WEBSERVICE>java.lang.NullPointerException

2011-09-20 15:50:06,677 ERROR [pool-2-thread-1] com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPluginRepository (?:?) - ARFilterApiCall FAILs in plugin: ARSYS.ARF.WEBSERVICE

ERROR (9130): Message not in catalog; Message number = 9130

           at com.bmc.arsys.ws.plugin.WSPlugin.ThrowException(WSPlugin.java:158)

           at com.bmc.arsys.ws.plugin.WSPlugin.filterAPICall(WSPlugin.java:151)

           at com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPluginRepository.ARFilterApiCall(Unknown Source)

           at com.bmc.arsys.pluginsvr.a.ArEsFilterApi_5(Unknown Source)

           at com.bmc.arsys.pluginsvr.a.ArEsFilterApi_4(Unknown Source)

           at com.bmc.arsys.arrpc.ARPluginServerDispatcher.dispatchOncRpcCall(Unknown Source)

           at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.dispatchCall(Unknown Source)

           at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.if(Unknown Source)

           at com.bmc.arsys.arrpc.nio.ArRpcCallHandler.processRpcCall(Unknown Source)

           at com.bmc.arsys.arrpc.nio.ArRpcCallHandler$Processor.run(Unknown Source)

           at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

           at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

           at java.lang.Thread.run(Unknown Source)

 

 

Any ideas?

  • 1. Problem consuming a webservice with "mustUnderstand"
    Sylvain YVON

    Hi,

     

    Is it working when you consume it with SOAPUI, not when you consume it with ARS ?

    Can you post a screenshot of your Filter Set Field action with the mapping as it is understood by Dev Studio ?

    If it's displaying a "SOAPHeader" section with "Security", have you tried to clear it or simply right-click on it to delete ? (not sure it's possible)

     

    Sylvain

  • 2. Problem consuming a webservice with "mustUnderstand"
    dice

    Thank you for your answer. No it's not possible to remove the header.

     

    webservice.jpg

  • 3. Problem consuming a webservice with "mustUnderstand"
    Sylvain YVON

    Have you tried to tune the Authentication setting and the Mapping Info for the Password field ?

     

    If you want to compare SOAP UI and ARS requests, you can create a mockService in SOAP UI based on the web service WSDL and make the filter consume it. That would give you a fair idea of what the problem could be.

  • 4. Problem consuming a webservice with "mustUnderstand"
    dice

    It was a not supported webservice;

     

    "

    AXIS 1.4 which is bundled with Remedy AR since 7.5 onwards (correction - during phoce call I said AR 7.x) sets the mustunderstand attribute to 1 if it finds SOAP header information in the Client request to the Webservice (AR or External) for example WS Security information like username and password.  When SOAP header information is sent out, the mustunderstand attribute is set to 1 which otherwise is 0;  Because this attribute is set to 1, the Webservice is not able to understand it and thus the error. 

     

    For example in ARS 7.1:

     

    <soapenv:Header>

      <ns1:AuthenticationInfo soapenv:actor="" soapenv:mustUnderstand="0" xmlns:ns1="urn:_ExternalCases_KIT_A_Get">

        <ns1:userName>Demo</ns1:userName>

        <ns1:password/>

        <ns1:authentication/>

        <ns1:locale/>

        <ns1:timeZone/>

      </ns1:AuthenticationInfo>

    </soapenv:Header>

     

    The same request with ARS 7.5:

     

    <soapenv:Header>

      <ns1:AuthenticationInfo soapenv:actor="" soapenv:mustUnderstand="1" xmlns:ns1="urn:_ExternalCases_KIT_A_Get">

        <ns1:userName>Demo</ns1:userName>

        <ns1:password/>

        <ns1:authentication/>

        <ns1:locale/>

        <ns1:timeZone/>

      </ns1:AuthenticationInfo>

    </soapenv:Header>

     

     

    AXIS 1.4 does not have option to tweak this mustunderstand attribute.  In the earlier versions of AXIS, this attribute was sent with 0 value.  AXIS 2 has feature of setting this attribute either with 0 or 1 value which should be ideal for consuming your webservice.  There are chances of using AXIS 2 in the future versions of AR, however with the current version of AR 7.6.04, it is not possible to workaround from AR perspective. 

     

    I dont know if there is a way for the developer of your external webservice to do something in their application to accomodate the current request of AR 7.6.04 which contains SOAP header information and mustunderstand set to 1."

  • 5. Problem consuming a webservice with "mustUnderstand"
    sudeep kumar

    Hi Dice/Syvon,

     

    I am also getting the same error while consuming the webservice. i am using ars version 7.5 Is there a way to get around this issue?

     

     

    Thanks

    Sudeep

  • 6. Problem consuming a webservice with "mustUnderstand"
    Sylvain YVON

    Hi again,

     

    Dice, have you found a work around to consume the web service ?

    I'm running into the same problem right now.

     

    Thanks

    Sylvain

  • 7. Problem consuming a webservice with "mustUnderstand"
    dice

    Hi!

     

    No, we did a workaround with another webservice made with .NET. So we got a two layer webservice flow.

    Not the best but it works for us.

  • 8. Re: Problem consuming a webservice with "mustUnderstand"
    Sylvain YVON

    Thanks for your feedback.

    I can't spend more time on the matter right now but it looks like there could be some way to integrate an xsd part to a local copy of the wsdl with :

    <xsd:attribute ref="soap:mustUnderstand" use="prohibited" />

    Of course it requires a major editing of the wsdl, without a garanteed result.

  • 9. Re: Problem consuming a webservice with "mustUnderstand"
    Sylvain YVON

    Just to let people know, the "use=prohibited" didn't solve the problem.

    A way to work around it though is to drop the authentication header from the wsdl and set an anonymous login in the "web service settings" page of the MT.