AXIS Adapter - Remove mustUnderstand attribute

We are using Axis adapter to insert a custom header into the soap envelope. The adapter automatically inserts the custom header with attribute mustUnderstand="0", but the receiver service raise a validation error since it is not able to recognize the attribute mustUnderstand. Is it possible to avoid the adding of this attribute?
Thanks,
Antonello

Hi,
You mean that you need the information contained in the XI header.
I don't think you can directly turn off the mustUnderstand flag of the XI header.
But it is very straightforward to extract the information you need and put it in another header of your choice.
In this case, you can just use the HeaderExtractionHandler and HeaderInsertionHandler.
For example, suppose your XI header looks like
<sap:Main ...>
<sap:MessageId>062617a0-b1de-11df-b30e-c0a30a12c821</sap:MessageId>
<sap:Receiver>
   <sap:Service>Luzon</ns1:Service>
</sap:Receiver>
<sap:Interface namespace='http://luzon.com/leopard'>orderCheck</sap:Interface>
</ns1:Main>
and you want to extract the message ID, the receiver service, and the interface name into your own header
<x:MessageHeader soapenv:mustUnderstand='0' xmlns:x='urn:luzon.com:leopard'>
<x:msgid>062617a0-b1de-11df-b30e-c0a30a12c821</x:msgid>
<x:group>Luzon</x:group>
<x:action>orderCheck</x:action>
</x:MessageHeader>
What you need is the HeaderExtractionHandler placed before xireq in the receiver handler sequence
handler.type   java:com.sap.aii.axis.soap.HeaderExtractionHandler
namespaces     s http://sap.com/xi/XI/Message/30
path.1         s:Main/s:MessageId
name.1         sapkeys{msgid}
path.2         s:Main/s:Receiver/s:Service
name.2         sapkeys{receiver}
path.3         s:Main/s:Interface
name.3         sapkeys{action}
The above configuration will extract the required information in the map table sapkeys with keys msgid, receiver, and action, respectively.
And you need the HeaderInsertionHandler placed after xireq and before trp.
handler.type   java:com.sap.aii.axis.soap.HeaderExtractionHandler
value.1        <x:MessageHeader xmlns:x='urn:luzon.com:leopard'><x:msgid>{0}</x:msgid><x:group>{1}</x:group><x:action>{2}</x:action></x:MessageHeader>
arguments.1    sapkeys{msgid} sapkeys{receiver} sapkeys{action}
This will insert the above custom header filled with the extracted values.
Regards, Yza

Similar Messages

  • Remove XI-part of SOAP Header in Axis Adapter

    Hi folks!
    We are running a PI 7.11 and use the SOAP Axis Sender Adapter in a synchronous SOAP Web Service scenario. Our challenge is that in our response we definitely need a SOAP Header tag, but it should be empty like this <soapenv:Header/> or this <soapenv:Header></soapenv:Header>
    We tried to achieve this with the Axis Handler com.sap.aii.axis.soap.HeaderRemovalHandler. But regardless of the parameters we provide to this handler it always removes the complete SOAP Header. On sample is to remove the PI-specific Main header tag from SOAP Header:
    name.1=Main
    namespace.1=http://sap.com/xi/XI/Message/30
    We also tried it only with namespace. But always the same sh... happens: The SOAP Header is removed completely.
    Any ideas?
    Thanx very much in advance!
    Regards,
    Volker

    Hi Stefan!
    Thanx for your reply. We found that Axis handler mentionedby me in SAP Note 1039369 "FAQ XI Axis Adapter" .
    But please tell me how to parameterize the java:com.sap.aii.axis.xi.XI30InboundHandler to ensure that the XI part of SOAP header is removed, but not the complete SOAP header.
    Thanx in advance!
    Regards,
    Volker

  • Error while passing URL Dynamically in SOAP AXIS adapter..!!

    Hi ,
    Idoc> XI>SOAP-AXIS
    I am doing a scenario where I need to pass the URL dynamically in SOAP-AXIS adapter by taking the RCVPRN of Idoc.
    If
    RCVPRN = 100 , message has to go to http://10.190.25.16:8210/file/receiver
    RCVPRN = 200 , message has to go to    http://10.190.25.16:8210/file/receiver2
    RCVPRN = 300 , message has to go to    http://10.190.25.16:8210/file/receiver3
    I used the below UDF and it is working correctly and generating the URL dynamically .
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey keyHeader1 = DynamicConfigurationKey.create( "http://sap.com/xi/XI/System/SOAP", "TServerLocation");
    conf.put(keyHeader1, a);
    return "";
    The value is coming in SOAP document as expected like below.
    <sap:DynamicConfiguration xmlns:sap="http://sap.com/xi/XI/Message/30" SOAP:mustUnderstand="1">
      <sap:Record namespace="http://sap.com/xi/XI/System/SOAP" name="TServerLocation">http://10.190.25.16:8210/file/receiver3</sap:Record>
      </sap:DynamicConfiguration>
    I used the below Configuration modules in receiver SOAP-AXIS adapter as suggested in Note 1028961.
    AF_Adapters/axis/AFAdapterBean ---> afreq
    AF_Adapters/axis/HandlerBean ---> xireq
    AF_Adapters/axis/HandlerBean ---> dc
    AF_Adapters/axis/HandlerBean ---> remover
    AF_Adapters/axis/HandlerBean ---> trp
    AF_Adapters/axis/HandlerBean ---> xires
    AF_Adapters/axis/AFAdapterBean ---> afres
    xireq -> handler.type-> java:com.sap.aii.axis.xi.XI30OutboundHandler
    dc -> handler.type-> javasap.aii.axis.xi.XI30DynamicConfigurationHandler
    dc ---> key.1 ---> write http://sap.com/xi/XI/System/SOAP TServerLocation
    dc ---> location.1 ---> context
    dc ---> value.1 ---> transport.url
    remover ---> handler.type ---> java:com.sap.aii.axis.soap.HeaderRemovalHandler
    remover ---> namespace ---> http://sap.com/xi/XI/Message/30
    trp ---> handler.type ---> java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
    trp ---> module.pivot ---> true
    xires ---> handler.type ---> java:com.sap.aii.axis.xi.XI30OutboundHandler
    and I am getting the below error in SOAP-AXIS channel at the point java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender.
    2009-03-02 15:23:44 Success Axis: getting handler trp of java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
    2009-03-02 15:23:45 Error Axis: error in invocation: (500)internal server error
    2009-03-02 15:23:45 Error MP: Exception caught with cause (500)internal server error
    2009-03-02 15:23:45 Error Exception caught by adapter framework: (500)internal server error
    2009-03-02 15:23:46 Error Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: (500)internal server error: (500)internal server error.
    2009-03-02 15:23:46 Error The message status set to NDLV.
    Kindly let me know if anyone has any idea what might be wrong?
    Note : The given URL is correct one because I cross checked by passing them normally by giving directly in adapter and they are all working and the message is going to receiver.
    Thanks
    Deepthi

    Hi Stefan,
    >> dc -> handler.type-> javasap.aii.axis.xi.XI30DynamicConfigurationHandler
    >> dc ---> key.1 ---> write http://sap.com/xi/XI/System/SOAP TServerLocation
    >> dc ---> location.1 ---> context
    >> dc ---> value.1 ---> transport.url
    >> Try read instead of write
    When I tried with this, I am getting the below error "Connection refused ".
    Success Axis: entering HandlerBean
    Success Axis: getting handler trp of java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
    Error Axis: error in invocation: java.net.ConnectException: Connection refused
    Error MP: Exception caught with cause java.net.ConnectException: Connection refused
    Error Exception caught by adapter framework: ; nested exception is: java.net.ConnectException: Connection refused
    Error Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: ; nested exception is: java.net.ConnectException: Connection refused: java.net.ConnectException: Connection refused.
    Success The message status set to WAIT.
    It is going successfully when I tried sending directly. Looks like Dynamic Configuration is not working for SOAP-AXIS.
    Any Suggestion?
    Thanks
    Deepthi.

  • JMS adapter: Adapter specific message attributes

    Hi,
    I have a synchronous SOAP to JMS (MQ series) scenario where I’m using sync/async bridge (without BPM).
    I need to correlate the message being put on JMS queue (JMS receiver adapter) and the response (JMS sender adapter).
    The “standard” receiver JMS adapter only allows the JMS correlation ID to be set to one of three different values (excluding NULL). 2 of these (reference and conversation ID) will be empty in my scenario, leaving me with only the XI message ID. This ID however exceeds the length of ie. the JMS correlation ID and thus isn’t suitable for correlating anything using the field JMS Correlation ID.
    NB: it is of no use to try and set the conversation ID at mapping time (using container object) since the changed value only is available during mapping execution.
    Surely one way of setting the conversation ID would be to use an adapter module in SOAP sender, but this is not an option. Also the sender system will not provide one either.
    Now the problem isn’t setting the JMS correlation ID dynamically at runtime (this is achieved without trouble using the dynamic configuration API with the key ‘DCJMSCorreleationID’). The problem is to actually have XI correlate the request with the response.
    Since the JMS collelation ID is smaller than the XI message ID and the conversation and reference ID isn’t available, what I figure is that I need to find a MQ message property to use and then use the ‘Set MSProperty to’ part instead – this property surely needs to be large enough to contain the XI message ID.
    So what I did was I looked in http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.amqwak.doc/js50938.htm
    where a list of fields in the message descriptor is available figuring I can just use one of these. Looking through the list I notice the field MDRQ (‘Name of reply queue’, 48-byte character string) should be able to hold the XI message ID. So I add ‘MDQR’ in the ‘Specify additional JMS message properties’ and set the ‘Java Type’ to String and also enter this field in the Correlation Setting of the receiver JMS adapter.
    Runtime:
    When looking in MDT I see:
    New JMS message will be correlated with the XI message. Correlation rule: XI_MESSAGEID, correlated property: JMS property MDRM, correlation value: 36158680-5a0c-11dc-8c14-000f203cd3c8
    I looks like a success! No data is however set in the field when looking at messages being put on MQ.
    If I increase the trace level of the JMS adapter I can see (in defaultTrace) the following:
    Cannot read the switch setting for property name DCJMSStringProperty0, switch name dynConfigDCJMSStringProperty0. It is switched off.
    What does this error mean?
    I have of course clicked ‘Use adapter Specific Message-Attributes’ and also the ‘Specify additional…’. In other words everything look ok in configuration.
    Since I’ve also put a check mark in ‘Fail if adapter specific message attributes is missing’ I can see that I successfully put a value (using dynamic conf. at mapping time) in the field... but still something isn’t right – the value of the property never reached MQ.
    Now I’ve tried with a couple of fields in the message descriptor from the previous URL. XI complains all the time.
    Anybody got some ideas?
    Best Regards,
    Daniel

    Hi Vijay,
    Thanks for your replay,as per your input i creted dynamic configuration method,
    i taget structure  luks like this
       <Data>
           <Mesage>
                 <gl_update>
                      <header>
                            <ean1>
                            <ean2>
                      </header>
                  <gl_update>
           <Message>
    i written UDF and mapped to header element gl_update,
    but i am getting  below error message in MONI
    SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code>
      <SAP:P1>com/sap/xi/tf/_MM_ ffjms_</SAP:P1>
      <SAP:P2>com.sap.aii.mappingtool.tf7.IllegalInstanceExcepti</SAP:P2>
      <SAP:P3>on: Cannot create target element /ns0:MT_jms_ _a</SAP:P3>
      <SAP:P4>sync_out/Data/Message/ GLUpdate. Values missi~</SAP:P4>
      <SAP:AdditionalText />
      <SAP:Stack>Runtime exception occurred during application mapping com/sap/xi/tf/_MM_ ffjms_; com.sap.aii.mappingtool.tf7.IllegalInstanceException: Cannot create target element /ns0:MT_jms_ asyncout/Data/Message/ GLUpdate. Values missi~</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    i want to know i mapped to UDF to GL_Update is is correct, to which element i have to map.
    i think there is no prob with UDF,its executing ,giving warning messages
    help me on this,
    Regaards
    Raj

  • Overwrite Adapter-Specific Message Attributes in MAIL adapter.

    Hi guru.
    I'm trying to use the SENDER MAIL Adapter.
    My scenario is the following:
    a remote system send an email with an XML file like attachment. The PI System read the mailbox and tries to map the payload.
    When I try without the "Adapter-Specific Message Attributes" the flow work well, but I need to know the email of the sender.
    When I try to enable the Adapter-Specific Message Attributes the system finds an error in the SOAP envelop, in the "SHeaderX-CR-HASHEDPUZZLE" Node.
    This is a part of the ENVELOP.
    <sap:DynamicConfiguration SOAP:mustUnderstand="1">
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderTO">email</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SUser">testxi</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-ORIGINATING-IP">[XX.XXX.XX.XXX]</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SGreeting">
    Lotus Notes POP3 server version X2.0 ready on xxx.</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderSUBJECT">GROUDWORK_REMOTE</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-MSG-REF">
    server-10.XXXX.com!1224858537!24401109!1
    </sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderMESSAGE-ID"> 00a801c935e4$d4b4e3d0$7e1eab70$
    </sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-VIRUS-SCANNED">amavisd-new at xxx.com</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-ENV-SENDER">EMAIL</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-STARSCAN-VERSION">5.5.12.14.2; banners=-,-,xxx.it</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-SPAMWHITELISTED">domain whitelist</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-VIRUSCHECKED">Checked</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-MIMETRACK">
    Itemize by SMTP Server on IXXX(Release 6.5.5|November30, 2005) at 10/24/2008 16:28:57,Serialize by POP3 Server on IXXX(Release 6.5.5FP2|October23, 2006) at 24/10/2008 16:38:51,Serialize complete at 24/10/2008 16:38:51
    </sap:Record>
    *THE ERROR IS IN THE FOLLOWING NODE*
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-CR-HASHEDPUZZLE">
    7hY= AFac ANQ+ Ad/R ArpP BnYc C6X8 EpvL FLPB GGaw GaCt HKM+ I0Nu JIhk JdJ4 KIZZ;1;dABlAHMAdAB4AGkAQABwAHIAbwB0AG8AdABpAHAAbwAuAGkAdAA=;
    Sosha1_v1;7;{CCB182EF-E812-44B6-9C48-85873A18C72};bQBhAG4AdQBlAGwALgBjAGgAaQBhAHIAZQBsAGwAaQBAAGkAbgBmAHIAYQBjAG8AbQAuAGkAdAA=;
    Fri, 24 Oct 2008 14:28:46 GMT;RgBXADoAIABDAE8ATQBFAFIAXwBSAEUATQBPAFQARQA=
    </sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-CR-PUZZLEID">{CCB182EF-E812-44B6-9C48-B85873A18C72}</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderTHREAD-INDEX">
    Ack1vUKnx+miPqT4T22mKaVcKhgAvwAAEmwwAAGwdQAABvplAAAAK6sgAAARhjAAAGHCAAAAKwPAAABcPNA=
    </sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderRECEIVED">
    from XXX.com ([xx.xxx.xxx.xx])         by mail3.XXX.com (Lotus Domino Release 6.5.5)         with SMTP id 2008102416285733-32229          for EMAIL ;         Fri, 24 Oct 2008 16:28:57 +0200
    </sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderDATE">Fri, 24 Oct 2008 16:28:48 +0200</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SServerLocation">pop://popserver</sap:Record>
    </sap:DynamicConfiguration>
    My question is:
    Can I  overwrite in the adapter the <sap:Record namespace="http://sap.com/xi/XI/System/Mail" name="SHeaderX-CR-HASHEDPUZZLE"> ?
    <post_modified>
    Edited by: Juan Reyes on Nov 3, 2008 7:22 PM

    Hi
    Check the details of the Email in Mail box are all the Adapter specific parameters are coming. If not then this will not read Adapter Specific parameters. Some Legacy system dont generate all parameters But you can add your using variable header.
    Thanks
    Gaurav

  • Problem with Dynamic Configuration in SOAP-AXIS adapter..!!!

    Hi ,
    Idoc> XI>SOAP-AXIS
    I am doing a scenario where I need to pass the URL dynamically in SOAP-AXIS adapter by taking the SNDPRN of Idoc.
    If SNDPRN = 100 , message has to go to  http://10.190.25.16:8210/file/receiver
       SNDPRN = 200 , message has to go to  http://20.180.26.16:8210/file/receiver
    It is working correctly when I tried for single receiver. When I' tried to use DynamicConfiguration, it is coming in SOAP document but it is not working and not passing to correct channel.  According to this note 1039369, I mentioned the following modules.
    AF_Adapters/axis/AFAdapterBean  --->                 afreq
    AF_Adapters/axis/HandlerBean      --->                  xireq 
    AF_Adapters/axis/HandlerBean      --->                  dc
    AF_Adapters/axis/HandlerBean       --->                 remover        
    AF_Adapters/axis/HandlerBean       --->                 trp
    AF_Adapters/axis/HandlerBean        --->                xires       
    AF_Adapters/axis/AFAdapterBean    --->               afres
    xireq ->  handler.type-> java:com.sap.aii.axis.xi.XI30OutboundHandler
    dc    ->  handler.type-> javasap.aii.axis.xi.XI30DynamicConfigurationHandler
    dc   --->   key.1 --->      write http://sap.com/xi/XI/System/SOAP TServerLocation
    dc    --->          location.1  --->         context
    dc     --->         value.1      --->        transport.url
    remover    --->  handler.type    --->   java:com.sap.aii.axis.soap.HeaderRemovalHandler
    remover     ---> namespace    --->      http://sap.com/xi/XI/Message/30
    trp         --->     handler.type   --->    java:com.sap.aii.adapter.axis.ra.transport.http.HTTPSender
    trp           --->  module.pivot  --->     true
    xires     --->    handler.type   --->    java:com.sap.aii.axis.xi.XI30OutboundHandler
    and I am getting the below error in SOAP-AXIS channel
    Error Axis:    error in invocation: java.lang.IllegalArgumentException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Error MP:     Exception caught with cause java.lang.IllegalArgumentException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Error           Exception caught by adapter framework: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Error Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage: java.lang.IllegalArgumentException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Kindly let me know if anyone has any idea what might be wrong?
    Thanks
    Deepthi

    I have a similar problem. I also like to add some header fields to my message und that's way I'm trying to use the AXIS adapter. (Axis adapter FAQ question 30) Unfortunately I'm getting exactly the same error message:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.lang.IllegalArgumentException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Deepthi, you wrote that you have missed one jar file. Can you remember which file it was?

  • Dynamic filepath in the Axis adapter

    Hi,
    I have a scenario where I attatch a PDF file in a ABAP proxy as a SOAP attachment, and I need to place this file on a harddrive with the path decided from the data in the message payload. In the "normal" fileadapter I can write to the adapter specific message attributes. Is there a similar possibility with the file transport protocol with the AXIS adapter?
    Kind regards
    Mikkel

    I have a similar problem. I also like to add some header fields to my message und that's way I'm trying to use the AXIS adapter. (Axis adapter FAQ question 30) Unfortunately I'm getting exactly the same error message:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.lang.IllegalArgumentException: object type invalid: class com.sap.aii.adapter.xi.ms.XIMessage
    Deepthi, you wrote that you have missed one jar file. Can you remember which file it was?

  • faultstring SOAPAction /faultstring ---  Error in Axis Adapter

    Hi All,
    I am doing an sender https scenario. My end customer uses ariba to send messages to XI. They dont want to use username and pwd to send the document. So we have eliminated the soap adapter (because it asks for username and pwd to send the request). Now we are using axis adapter (where we have removed the user and pwd paramters in axis adapter itself). So it dont ask for username and pwd anymore for any of the axis comm. channel.
    Now the issue is when we send a https request to my url(I have created wsdl using xI and took the url from it) using SOAP UI I am able to get it into xi. But when they use ariba or Fiddler (we can download free for testing) they are getting an error message like:
    <soapenv:Body>
      <soapenv:Fault>
       <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
       <faultstring>SOAPAction</faultstring>
       <detail>
        <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">SOAPAction
         at com.sap.aii.adapter.axis.web.ServletReceiverCore.getSoapAction(ServletReceiverCore.java:665)
         at com.sap.aii.adapter.axis.web.ServletReceiverCore.doPost(ServletReceiverCore.java:273)
         at com.sap.aii.adapter.axis.web.MessageServlet.doPost(MessageServlet.java:392)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    When I researched this it seems xi is expecting a soap action. But they dont have an option to add the soap action on their side. Now I am struck what to do.
    When I googled for this error, it seems it is not error with xi, it is with the apache axis itself. It seems like by default apache axis expects a soapaction and if we dont want to send then we need to give soapaction as "" (which is null). I dont know where to give this. I assume that we need to change the jar file somewhere on axis adapter. No idea where it is and what to do with this approach.
    Also I have seen stefans weblog:
    /people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine
    With this first I need to create an https abap port. Then I can use soap adapter directly by sending username and pwd directly to the url. But the catch here is also to send soapaction which in our case is not possible.
    Can anyone of you please help me out.
    Regards,
    ---Satish

    Satish,
    I think the easiest solution is to
    1. configure https on the ABAP stack: in trx STRUST you can use the same SSL certificate used to setup SSL in the KeyStorage service of V.A. so that calling the ABAP http or the J2EE http will be copletely transaprent to your SSL client (i.e. ARIBA)
    2. use HTTP plain adapter ( <host>:<abap_https_port>/sap/xi/adapter_plain )
    - you get rid of the SOAP envelope and SOAP action issue, as the XML payload posted by Ariba will be immediately treated as a PI message payload
    - here also you can use the same two parameters as per Stefan's blog (&sap-user=<username>&sap-password=<password>) and thus get rid of the authentication issue.
    Stuff sent to the plain_adapter is handled by the CL_HTTP_PLAIN_INBOUND class (use trx SE24 to take a look) and method IF_HTTP_EXTENSION~HANDLE_REQUEST: there are a number of parameters that can be supplied by the client calling it (i.e. Ariba). See below an excerpt.
    * call-syntax:  XI 3
    * http://hostname:port/path
    *                      ?namespace=???
    *                      &interface=???
    *                      &service=???
    *                      &party=???
    *                      &agency=???
    *                      &scheme=???
    *                      [&qos= EO|BE|EOIO]
    *                      [&msgguid=???]
    *                      [&queueid=???]
    *                      [&trace=[1|2|3]]
    I am strongly convinced that this is the far easiest solution. Programming Axis handlers can be tricky though fascinating (I've written a nice one I'll probably blog about as soon as I get a chance.) But I will nevertheless try to simulate your Axis issue when I get access to a machine like your own.
    Cheers,
    Alex

  • SOAP Axis adapter - problem with XML formatting

    Hello All,
    We are using SOAP Axis adapter on our scenario (because of NTLM authenticatiom) and faced a problem that some module in a module chain is pretty-formatting XML message (inserting newlines and spaces).
    Receiving WebService is REALLY strict on format and doesn't allow spaces and newlines between XML elements.
    Formatting is for sure done already in adapter as in sxmb_moni message is still one-liner.
    After different tests this formatting is most likely done by XI30OutboundHandler.
    Are there any parameters to prevent this formatting?
    If there are no parameters, than maybe there is a standard module to remove this XML indentation?
    Where I can found source code for XI30OutboundHandler to check how it is extracting payload from XI message?
    Thanks in advance for your answers!
    Best Regards,
    Artsiom Anichenka

    Hi, have you find a solution for this problem?
    I've tried set the parameter “disablePrettyXML”, as mentioned in SAP note 1039369 (search for “disabling pretty XML”), but apparently it didn’t work too. Have you tried that?
    I still get linefeeds and carriage return in the post requisition to the WebService.
    Regards,
    Ronaldo Schork.

  • Axis adapter receiver handle fault message

    Hi
    We have a Sync interface which makes a Proxy call from ECC to PI 7.3 and then PI makes Soap(Axis) Sync call to Web sevice. We are having issues when handling SOAP 1.2 fault message.
    Below is the actual fault response from Webserver:
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
       <env:Header/>
       <env:Body>
          <env:Fault>
             <env:Code>
                <env:Value>env:Receiver</env:Value>
             </env:Code>
             <env:Reason>
                <env:Text xml:lang="en">FaultMsg</env:Text>
             </env:Reason>
             <env:Detail>
                <ns2:servicefault xmlns:ns2="https://hostname.de/webservice/0400-0005">
                </ns2:servicefault>
             </env:Detail>
          </env:Fault>
       </env:Body>
    </env:Envelope>
    But PI receives this response like system error:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: FaultMsg</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    I checked this way http://scn.sap.com/thread/1675917 but it doesn't fit for Axis adapter.
    Please let me for any clues how to handle this fault response.
    Regards, Dzmitry

    Hi,
    I'm working with Dzmitry on the issue since last week. After analyzing the implementation and checking some SAP notes I came to the following conclusion:
    According to note 856597 the fault behavior of axis adapter is  as follows:
    " A: The receiver adapter expects a SOAP message as response. For
    synchrnous calls, a successful response should be returned with
    HTTP 200. In this case, the content of the SOAP body will be
    returned to the caller as the response payload. When some error
    occurs, the SOAP message may contain the SOAP fault element. In
    this case, when the fault detail element is not empty, its
    content will be returned as the fault payload in an application
    error message. For others, a system error message will be
    returned to the caller."
    The example shows a SOAP 1.1 fault message with a "detail" node being mapped to an application fault.
    As we are using SOAP 1.2 the namespace as well as structure of the fault defers. I assume that the module responsible for the transformation from AXIS message to XI message within the module chain does not recognize the detail node on out soap 1.2 fault.
    Therefore the solution would be to insert a custom AXIS handler before com.sap.aii.axis.xi.XI30OutboundHandle mapping the soap 1.2 fault to a soap 1.1 fault.
    Is there something like a short how to on how to implement Axis handler and how to deploy it. Sap help only says to package it into sda file....
    Thanks a lot  in advance!!!
    BR,
    Eugen

  • XSLT Mapping of Adapter-Specific Message Attributes

    Hi,
    We have the requirement to build a soap request with a custom soap envelop/header which contains a sessionId.
    Therefore we developed a xlst mapping which is called directly after a graphical mapping.
    In the graphical mapping the session id is written to the dynamic configuration.
    The goal is to read this session id in the xslt mapping from the dynamic configuration using XSLT Mapping of Adapter-Specific Message Attributes. We used  [this|http://help.sap.com/saphelp_nwpi711/helpdata/en/43/03fe1bdc7821ade10000000a1553f6/content.htm] documentation as an example.
    But we are getting the following error: TransformerConfigurationException triggered while loading XSLT mapping. The error is raised at this node: <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    This is the coding of the xslt transformation:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
          xmlns:ns1="urn:enterprise.soap.sforce.com"
          xmlns:map="java:java.util.Map"
          xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration"
          xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:output indent="no" />
    <xsl:param name="inputparam"/>
    <xsl:template match="/">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com">
    <soapenv:Header>
    <urn:SessionHeader>
    <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/SOAP', 'sessionId')" />
    <xsl:variable name="dynamic-value" select="dyn:get($dynamic-conf, $dynamic-key)" />
    <urn:sessionId><xsl:value-of select="$dynamic-value"></xsl:value-of></urn:sessionId>
    </urn:SessionHeader>
    </soapenv:Header>
    <soapenv:Body>
    <xsl:copy-of select="*"/>
    </soapenv:Body>
    </soapenv:Envelope>
    </xsl:template>
    </xsl:stylesheet>
    Any help will be highly appreciated.
    Regards, Henk

    Hi, yes we did try that and lot's of other combination.
    The results of those trials are that it seems to go wrong with <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    When we enclose it with <xsl:if test="function-available('map:get')"> the transformation is not dumping, but the function is not available.
    Regards, Henk

  • PI 7.11 Receiver SOAP (Axis) Adapter with MTOM (Attachments)

    Hello,
    Iu2019m trying to configure the Receiver SOAP (Axis) adapter for sending SOAP attachments via MTOM to a third-party webservice, but I'm not getting that PI transform the binary encode64 data in an payload element into a MTOM attachment (xop:include).
    The configuration looks like this:
    Transport Protocol: HTTP (Axis)
    SOAP Version: 1.2
    Encapsulation Format: MTOM
    Keep Attchments: enabled
    Payload Extraction: SOAP Body Child
    First of all, could you confirm if this is supported?
    Or Axis only supports MTOM for the transport protocol 'File (Axis)' like it seems refered in [Configuring the Receiver Axis SOAP Adapter|http://help.sap.com/saphelp_nwpi711/helpdata/en/45/a3c48c87cd0039e10000000a11466f/frameset.htm]
    Can you please provide me some guidance here?
    Thanks in advance!
    Kind Regards,
    Alexandre

    Hello,
    I am facing the exact same issue.
    I can't seem to set the cookie in the http header after following the guide.
    Cookie: WSL-credential=MyOwnCookie
    I managed to set the SOAPAction though.
    Anyone has any ideas?

  • Exchange rate SAOP-AXIS adapter - SAP PO 7.4

    Hi Expert,
    My requirement is to fetch exchange xml file from web link : http://www.nationalbanken.dk/DNUK/rates.nsf/rates.xml . I have gone through Michael blog: http://scn.sap.com/community/pi-and-soa-middleware/blog/2012/01/05/michals-pi-tips-exchange-rates-from-an-xml-file-on-a-web-page--rest-axis
    And I have done everything same but nothing happening to sender adapter.
    It is showing running but no log updated.
    I am working SAP PO (Process Orchestration) 7.4 SP3.
    I have gone through ......../XIAxisAdapter/MessageServlet and it show below details:
    Axis Adapter Message Servlet
    Component Versions
    Adapter Common Library Version: 1.7.4003.20130911141725.0000, NW731EXT_08_REL (2013-09-11T18:40:12+0000)
    Adapter Application Version: 1.7.4003.20130911141725.0000, NW731EXT_08_REL (2013-09-11T18:40:22+0000)
    Axis Version: ???
    Required Components
    Apache-Axis
    Error: required component missing --- looking for org.apache.axis.AxisEngine in com.sap.aii.af.axisproviderlib/axis.jar; see http://ws.apache.org/axis/
    Jakarta-Commons Discovery
    Error: required component missing --- looking for org.apache.commons.discovery.Resource in com.sap.aii.af.axisproviderlib/commons-discovery.jar; see http://jakarta.apache.org/commons/discovery/
    Jakarta-Commons Logging
    Error: required component missing --- looking for org.apache.commons.logging.Log in com.sap.aii.af.axisproviderlib/commons-logging.jar; see http://jakarta.apache.org/commons/logging/
    Optional Components
    Thanks in advance!
    Kumar

    HI Amit,
    I see status as error:
    Required Components
    Apache-Axis
    Error: required component missing --- looking for org.apache.axis.AxisEngine in com.sap.aii.af.axisproviderlib/axis.jar; see http://ws.apache.org/axis/
    Jakarta-Commons Discovery
    Error: required component missing --- looking for org.apache.commons.discovery.Resource in com.sap.aii.af.axisproviderlib/commons-discovery.jar; see http://jakarta.apache.org/commons/discovery/
    Jakarta-Commons Logging
    Error: required component missing --- looking for org.apache.commons.logging.Log in com.sap.aii.af.axisproviderlib/commons-logging.jar; see http://jakarta.apache.org/commons/logging/
    Number of Missing Components: 3
    Status: Error
    Thanks,
    Kumar

  • Adapter-specific message attributes for the JMS Receiver adapter

    Dear SAP Community,
    We are trying to activate some parameters at message level when SAP XI sent an interface (XML data) to IBM Websphere MQ. Programmaticaly, this is done the following way:
           TextMessage outMessage = session.createTextMessage();
           MQQueue replyToQ = new MQQueue("TESTQM01","SYSTEM.ADMIN.ACTIVITY.QUEUE");
           Destination replyTo = (Destination) replyToQ;
           outMessage.setJMSReplyTo(replyTo);
           outMessage.setIntProperty("JMS_IBM_Report_Exception", MQC.MQRO_EXCEPTION);
           outMessage.setIntProperty("JMS_IBM_Report_Expiration", MQC.MQRO_EXPIRATION);;
           outMessage.setIntProperty("JMS_IBM_Report_COA", MQC.MQRO_COA);
           outMessage.setIntProperty("JMS_IBM_Report_COD", MQC.MQRO_COD);
           outMessage.setIntProperty("JMS_IBM_Report_Discard_Msg", MQC.MQRO_DISCARD_MSG);
    This code is working fine.
    Since the documentation about this feature (Adapter-specific message attributes) is very light, We am not sure about the interpretation we made.
    First, we defined the following attributes: MS_IBM_Report_Exception, JMS_IBM_Report_Expiration, JMS_IBM_Report_COA, JMS_IBM_Report_COD, JMS_IBM_Report_Discard_Msg. All of them are with type int.
    Then we changed the mapping (XSL) to pass the value to the dynamic configuration, using the technical names (DCJMSMessageProperty0, ..., DCJMSMessageProperty4) and the value of the constants. We also specified a value in the Reply To Queue parameter of the adapter. As a test, We also change another parameter via the mapping (the correlation ID, to use the idoc number) and according to the log of the processed message, every thing is finde. According to the trace of the JMS adapter, everything is fine to. However, this has no impact on the message, only the correlation ID is changed.
    The JMS server is IBM Websphere MQ (v6.0.2.1). It is already in production and working fine. This is a change we have been asked to implement.
    Has anyone experience with the JMS receiver adapter-specific message attrbitutes ? What have we done wrong ?
    Any help is greatly appreciated.
    Regards,
    Gregory PFISTER
    SAP XI Analyst - Holcim

    Hi Neha,
    pls do chk the below links for SOAP adapter message attributes
    http://help.sap.com/saphelp_nwpi71/helpdata/en/fc/5ad93f130f9215e10000000a155106/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/0a7d1be4e622f3e10000000a1553f7/content.htm
    http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_adapters.doc/doc/sap_xi/sapximst38.htm
    http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_adapters.doc/doc/webservices/webservices16.htm
    Regards
    Sampath

  • Java Mapping (not UDF) and Adapter-Specific Message Attributes

    Hello everybody,
    is it possible to create an Adapter-Specific Message Attributes in a java Mapping?
    I found in the SAP Help that the API com.sap.aii.mapping.api.DynamicConfiguration allows only to read, change or delete the attributes.
    best regards.
    Adnane Elgoute

    Hi,
    try the follwoing code
    import com.sap.aii.mapping.api.*;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.HashMap;
    import java.util.Map;
    public class JavaProgram
        implements StreamTransformation
        public JavaProgram()
        public void setParameter(Map map)
            param = map;
            if(param == null)
                param = new HashMap();
        public void execute(InputStream inputstream, OutputStream outputstream)
            try
                DynamicConfiguration dynamicconfiguration = (DynamicConfiguration)param.get("DynamicConfiguration");
                DynamicConfigurationKey dynamicconfigurationkey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", "FileName");
                String s = dynamicconfiguration.get(dynamicconfigurationkey);
             //Your logic
            catch(Throwable throwable)
                throwable.printStackTrace();
        private Map param;

Maybe you are looking for

  • How to dismiss Mail Full Screen when composing a new message

    OK, so in iOS you can simply pull down the message you are composing to access your inbox, but how can you do this in Yosemite when using full screen? Here is the scenario: I open Mail in Full Screen mode and start composing a message. I middle of it

  • Multiple JTrees

    Hi everybody! I've got to create something very similar to a file commander - something like dos NC or linux MC. The difference is there are my objects - called "resources" - instead of files. I've created a JFrame with two separate JPanels, each of

  • IMac 27" Strange Screen Marks Behind Glass

    Hi I've had my 27" iMac since march this year, yesterday I noticed that there is a strange yellow/brown blotchy patch in the top right hand corner, it is not on the front of the glass (it cant be wiped off) its on the INSIDE! I tried to take some pic

  • Export photo creation date

    How does one preserve the original creation date on photos exported from iPhoto?  My wife and I use different cameras and want to integrate our pictures.  The only way to do so is by creation date.  But when I export my photos from iPhoto the creatio

  • Bad iPod

    My friend purchased an iPod in June of 2005 and its has had many problems since that time. The latest problem is that it will not charge or at least not display the charging picture. she called tech support once and the next time was told that it wou