Receiver Axis SOAP Adapter

I have a SOAP receiver and am using the HTTP (Axis) Transport protocol. The reason for this being that the web service expects a web service security token with username and password.
I have loaded aii_af_axisprovider.sda with the mandatory .jar files as well as the wss4j optional .jar file.
I am using Basic authentication and have specified the the username and password. The 'Keep XI Headers' box has also been ticked.
However, I getting the following error:
"WSDoAllReceiver: Request does not contain required Security header"
Does anyone know what this could be? I am already specifying the username and password in the SOAP adapter. Do I need to specify this elsewhere?
Also, does anyone know I can view the SOAP messages being sent to the web service?
Thanks,
Krishneel

Hi,
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f071ff6d-5bfb-2910-a985-86ac9f6ad2a6
Ruby and the SOAP RunTime (SRT) Handler
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f071ff6d-5bfb-2910-a985-86ac9f6ad2a6
http://help.sap.com/saphelp_nw04/helpdata/en/10/287cc10e4511d5991d00508b5d5211/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/72/c730dac06511d4ad310000e83539c3/frameset.htm
Thanks,
Madhu

Similar Messages

  • Error in AXIS SOAP Adapter

    Hi Experts,
    Cuurently i am working on  Synchronous scenario.
    My scenario is ABAP Client Proxy> PI>AXIS SOAP ADAPTER(Webservice).
    My client requirement is to use UsernameToken security with PasswordDigest.
    I have deployed all the relevant .jar files and add the modules related to usernameToken security as per *SAP Note 1039369 FAQ XI Axis Adapter* in Receiver SOAP adapter.
    Now when  i am pushing the data from R/3 to PI, data is successfully coming to PI however when the data is going outside PI through Receiver AXIS  SOAP Adapter in RWB is showing
    *The message was successfully delivered to the application using connection SOAP_http://sap.com/xi/XI/System*
    *The message status set to DLVD*.
    Moreover when i am checking the message through SXMB_MONI i cant see the chequred flag for Request message and for response message its giving the following
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="SOAP">FAULT</SAP:Code>
      <SAP:P1>http://schemas.xmlsoap.org/soap/envelope/</SAP:P1>
      <SAP:P2>Server.generalException</SAP:P2>
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>WSDoAllReceiver: security processing failed (actions number mismatch)</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    and when i am cheking the trace of Respose message (request for message mapping ) its giving the
    <Trace level="1" type="T">Message has no payload</Trace>
      <Trace level="1" type="T">RuntimeException during appliction Java mapping com/sap/xi/tf/_MM_UrlResponse_To_CourseAccessUrlResponse_</Trace>
      <Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: Parsing an empty source. Root element expected! at com.sap.aii.mappingtool.tf3.Transformer.checkParserException(Transformer.java:187) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:151).....
    Currently SSL is not installed in my PI server.For temperory i am using HTTP instead of HTTPS.
    Please provide your valuable inputs on this.
    Regards
    Anku chopra
    Edited by: AnkuChopra on Aug 28, 2009 1:59 PM

    Hi Experts,
    In my Receiver SOAP adapter module Tab.
    As my scenario is synchronous  and i required UsernameToken with PasswordDigest security i have added following parameter value in module.(as per SAP Note 1039369 FAQ XI Axis Adapter ).
    Processing Sequence.
    Module Key
    afreq
    xireq
    wssec
    trp
    xires
    afres
    Module configuration
    ModuleKey  ParameterName   parametervalue
    xireq           handler.type         java:com.sap.aii.axis.xi.XI30OutboundHandler
    wssec         action                   UsernameToken
    wssec        handler.type         java:com.sap.aii.adapter.axis.ra.handlers.security.WSDoAllSender
    wssec       passwordType     PasswordDigest
    wssec      pwd.password     ********************
    wssec      user                       XYZ
    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.
    Do we need to do any other configuartion apart from above in parameter value.
    While getting response from third party i getting error as WSDoAllReceiver: security processing failed (actions number mismatch)
    Do i need to add  parameter value for WSDoAllReceiver as well as  my scenario is synchronous.
    Please help me out on this as i am not able to proceeed further because of the above errro.
    Please advice.
    regards
    Anku Chopra

  • Axis SOAP adapter

    We tried to use the Axis HTTP protocol in the definition of the communication channel as shown here:
    Adapter type: SOAP
    Transport protocol: HTTP
    Message protocol: Axis
    Adapter engine: Central Adapter Engine.
    When we tried to execute the scenario, we got the below error in SXMB_MONI:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Message entrant
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <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: org.apache.axis.ConfigurationException: adapter is null org.apache.axis.ConfigurationException: adapter is null at com.sap.aii.adapter.axis.modules.HandlerCore.process(HandlerCore.java:54) at com.sap.aii.adapter.axis.modules.HandlerBean.process(HandlerBean.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy2583.process(Unknown Source) at com.sap.aii.af.app.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:249) at sun.reflect.GeneratedMethodAccessor352.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy45.process(Unknown Source) at com.sap.aii.af.app.listener.AFWListenerBean.onMessage(AFWListenerBean.java:317) at sun.reflect.GeneratedMethodAccessor886.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy58.onMessage(Unknown Source) at com.sap.engine.messaging.impl.spi.ServicesImpl.deliver(ServicesImpl.java:314) at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1000) at com.sap.engine.messaging.impl.core.queue.consumer.RequestConsumer.onMessage(RequestConsumer.java:73) at com.sap.engine.messaging.impl.core.queue.Queue.run(Queue.java:848) at com.sap.engine.messaging.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:152) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:247)</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Has somebody got the same issue? Please help.

    The problem is corrected.
    For those who are interested, the problem was caused by a missing component in the installation of the Axis adapter in PI: the commons-httpclient.
    By verifying the list of modules present in the Module tab of the communication channel defined for the interface, we found an entry specifying 'com.sap.aii.adapter.axis.ra.transport.http.HTTPSender'.
    The documentation 'Configuring the Receiver Axis SOAP Adapter ' provided by SAP Help stated that:
    "If you are using the handler com.sap.aii.adapter.axis.ra.transport.http.CommonsHTTPSender, the commons-httpclient of Apache Commons HTTP Client must be contained in axisproviderlib."

  • XI acknowledgment from axis soap adapter

    We have implemented an integration from SAP ERP to an external system via XI. SAP sends a message to XI  via proxy which is then mapped to a web service call  to the external system via the axis soap adapter. If there is a problem the axis adapater sends back an acknowlodgement message with the soap error. This message is correctly interpreted by XI as en error acknowledgement. The acknowledgement message however fails in the routing as it is not able to find a receiver agreement for routing the message back. There is of course actually no valid recepient for this acknowledgement as the original message was created using an asynchronous proxy call. The problem is however that the original message is flagged as successful even though the acknowledgement contains an error. What we want to achieve is that the error in the acknowledgment causes the original message in XI to be flagged as failed, to allow error detection. Does anyone have any idea how to achive this ?
    Rgds
    Evind Langsaeter

    Hi
    We do not require any acknowledgements. But for the cases where the soap call is delivered, but returns a http response of 500 together with a complete soap envelope containing a soap fault, the Soap Axis Receiver Adapter is issuing an u201CApplicationErroru201D Acknowledgement Message (referring to the original request message) (even though it is not requested). This Acknowledgement Message is failing on the Integration Server with a configException u201CFailed to determine a receiver agreement for the given messageu201D. We have tried to create a receiver agreement and reciever channel with the given keys from the error message, but still getting the same result.
    Issue A: How to get this (non-requested) Acknowledge message to process without error.
    Issue B: How to get a proper u201Cerror-messageu201D telling that the original request message was not really delivered though (as the soap call gets a http response of 500).
    Rgds
    Eivind

  • Configuring the Sender Axis SOAP Adapter

    Hello,
    I am trying to configure Sender Axis SOAP Adapter using PI 7.0
    The regular inbound address for SOAP messages is: http://host:port/XISOAPAdapter/MessageServlet?channel=party:service:channel
    But the inbound address for AXIS SOAP messages is:
    http://host:port/XIAxisAdapter/MessageServlet?parameters
    parameters ::= token ( u2018&u2019 token )*
    token ::= name u2018=u2019 value
    name ::= fieldname
    value ::= fieldvalue
    fileldname ::= u2018senderPartyu2019 | u2018senderServiceu2019 | u2018receiverPartyu2019 | u2018receiverServiceu2019 |
    u2018interfaceu2019 | u2018interfaceNamespaceu2019 | u2018messageIdu2019 | u2018queueNameu2019
    fieldvalue ::= urlencoded value
    See this link: http://help.sap.com/saphelp_nw70/helpdata/en/45/a4f8bbdfdc0d36e10000000a114a6b/frameset.htm
    Can someone give me an example of such URL?
    Regards,
    Gigi.

    Hi,
    Re: SOAP (Axis) Adapter
    Thanks
    Vikranth

  • Sender Axis SOAP Adapter EOIO

    My PI Sender Axis SOAP Adapter is giving me the following error when I try and use an EOIO quality of service:
    The XI SequenceId must be uppercase and 1-16 characters long.; nested exception is:
    com.sap.engine.interfaces.messaging.api.exception.InvalidParamException: The XI SequenceId must be uppercase and 1-16 characters long.
    If I use EO then the adapter works fine. Does anyone know if EOIO is supported in the Sender Axis SOAP Adapter? I did notice when I select EOIO there is no text box for the Queue Name.

    Hi Krishneel,
    ExactlyOnceInOrder means that the constructed XI message has its QualityOfService value ExactlyOnceInOrder and it is processed synchronously to the persistence layer of the adapter engine and asynchronously to the target service in the order of persistence.
    To guarantee the exactly once delivery of a message, the client must supply a unique message ID for the message.
    More on this can be found in the SAP Note 1039369 (FAQ XI Axis Adapter)
    Also refer this link on basic info on Sender Axis SOAP Adapter.
    http://help.sap.com/saphelp_nw04/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm
    rgds
    Ven

  • Axis SOAP Adapter - Setting MIME headers for attachements (Handlers?)

    Hello,
    I need to know if/how it is possible to set the individual MIME headers of the parts making up a multipart/related SOAP message using only standard Axis Handlers e.g. "com.sap.aii.axis.xi.XI30DynamicConfigurationHandler" (as described in the Axis FAQ in Note 1039369).
    I know I can insert transport headers  using "com.sap.aii.axis.xi.XI30DynamicConfigurationHandler", but I can't see a way of setting a MIME header for, say, the first part (i.e. the SOAP part) or the second part (e.g. an attachement). Is this possible without writing your own Axis handler? The Axis FAQ, in "Advanced usage question 31" implies that you can set MIME Headers but only shows an example of setting the transport header.
    I am using the SOAP Adapter to send a message comprising and XML message (in the SOAP body) and a PDF document (as an attachement). The external company this is being sent to requires that we have specific values for the "Content-Id" MIME header in each part of the multipart/related document. This is why I need to understand if we can do this without writing our own Axis Handler.
    Incidentally, I have tried to write a custom Axis Handler but couldn't get PI to find it after deployment. I did this by inserting my JAR file in the "com.sap.aii.adapter.lib.sda" (as per Notes 1039369 / 1138877) and then using JSPM. After deployment, though, when I tried to start the SOAP Adapter I got the following error in the RWB: "failed to initialize: org.apache.axis.ConfigurationException: java.lang.ClassNotFoundException: com.hp.gerryaxis.GerryAxis..." (my class was called "GerryAxis" and I placed this in package "com.hp.gerryaxis"). I'm not an experienced Java programmer (my background is in ABAP), so if anyone can suggest whey I'm getting this error, I'd be very grateful (for example, could my choice of package be causing the problem?).
    Thanks for your help.

    I went ahead and wrote a simple bespoke Axis Handler. By invoking this from the standard "HandlerBean" in the module processor of my communication channel, I was able to overwrite and set new MIME headers in the Attachment Parts of my SOAP Message. I was also able to change the contents of the SOAP Envelope; for example, I found I could easily delete the SOAP Header. However, I've encountered a problem when I try and update the MIME headers of the SOAP Part i.e. the Part of the multipart/related message containing the SOAP Envelope.
    Does anyone know why I can't seem to change the MIME headers of the SOAP Part?
    The Axis API calls I used were as follows:
    (1) To update the MIME headers of attachements in my SOAP message:
    (a) Message = MessageContext.getCurrentMessage()
    (b) Iterator = Message.getAttachments()
    (c) AttachmentPart = Iterator.getNext()
    (d) AttachmentPart.setMimeHeader(name, value)
    This works.
    (2) To update the MIME headers of the SOAP (root) Part:
    (a) Message = MessageContext.getCurrentMessage()
    (b) SOAPPart = Message.getSOAPPart()
    (c) SOAPPart.setMimeHeader(name, value)
    This DOESN'Twork - the MIME headers of the SOAP Part never change.
    (3) To update the SOAP Envelope (delete the SOAP Header):
    (a) Message = MessageContext.getCurrentMessage()
    (b) SOAPPart = Message.getSOAPPart()
    (c) SOAPEnvelope = SOAPPart.getEnvelope()
    (d) SOAPHeader = SOAPEnvelope.getHeader()
    (e) SOAPHeader.removeContents()
    This works.
    I just don't understand why the call to SOAPPart.setMimeHeader() doens't work when I try and insert new MIME headers to the SOAP Part (e.g. "Content-Name") or when I try and change existing MIME headers there (e.g. "Content-ID"). I don't get any errors.
    The code of my handler is:
    @(#)GerryAxis.java       
    Set MIME headers in the SOAP and specified attachment part of a message
    package com.hp.handlers;
    import org.apache.axis.handlers.BasicHandler;
    import org.apache.axis.AxisFault;
    import org.apache.axis.attachments.AttachmentPart;
    import org.apache.axis.Message;
    import org.apache.axis.MessageContext;
    import java.util.Iterator;
    import javax.xml.soap.SOAPMessage;
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPHeader;
    import javax.xml.rpc.handler.soap.SOAPMessageContext;
    The <code>GerryAxis</code> handler class sets MIME headers.
    <p>
    This handler accepts the following parameters:
    <ul>
    <li><b>name</b>: Name of header
    <li><b>value</b>: Value for header
    <li><b>attachment</b>: Attachment number
    </ul>
    public class GerryAxis extends BasicHandler {
      /* (non-Javadoc)
    @see org.apache.axis.Handler#invoke(org.apache.axis.MessageContext)
      public void invoke(MessageContext msgContext) throws AxisFault {
        int i=0;
        boolean found = false;
        AttachmentPart ap = null;
        javax.xml.soap.SOAPPart sp = null;
        StringBuffer debug = new StringBuffer();
        try {
          // The MIME header change is controlled from the parameters "name", "value", "attachment" which  are
          // set in the module processor as parameters.
          String name  = (String)getOption("name");
          String value = (String)getOption("value");
          String attachment  = (String)getOption("attachment");
          Message msg = msgContext.getCurrentMessage();
          // Get the SOAP Part (the part holding the SOAP Envelope
          sp = msg.getSOAPPart();
          if (sp == null)
              debug.append("getSOAPPart returned <null> / ");
          // Set a MIME header in the SOAP Part - THIS DOES NOT WORK - WHY?     
          sp.setMimeHeader(name,value);
          // Remove the SOAP Header for the Envelope - this works fine
          SOAPEnvelope se = sp.getEnvelope();
          SOAPHeader sh = se.getHeader();
          sh.removeContents();
          // For debugging - writes some debuggin information to a "DEBUG" MIME header in the first Attachement Part
          debug.append("name = " + name +" / ");
          debug.append("value = " + value +" / ");
          debug.append("attachment = " + attachment + " / ");
          debug.append("getMimeHeader for SOAPPart returned " + sp.getMimeHeader(name)[0] + " / ");
          debug.append("getContentId for SOAPPart returned " + sp.getContentId() + " / ");
          // Update the specified attachement's MIME header - this works fine
          Iterator it = msg.getAttachments();
          while (it.hasNext()) {
            i++;
            ap = (AttachmentPart) it.next();
            if (i == new Integer(attachment).intValue()) {
              found = true;
              break;
          if (found) {
            ap.removeMimeHeader(name);
            ap.setMimeHeader("DEBUG",debug.toString());
            ap.setMimeHeader(name,value);
          msg.saveChanges();
        catch (Exception e) {
          throw AxisFault.makeFault(e);
    Thanks
    Edited by: Gerry Deighan on Oct 3, 2010 10:27 PM

  • Standalone (J2SE) adapter - axis SOAP adapter - issue duplicate messages

    All,
    Perhaps you can help me. I've setup a scenario where an standalone (J2SE) adapter sends a file to SAP XI channel, configured on the central adapter engine, of type SOAP configured to use Axis servlet.
    The connection is setup and the standalone adapter channel logs thre response from the SOAP channel which reads HTTP error 500, indicating a duplicate message.
    SAP has identified this problem and proposes in the FAQ for Axis (note 1039369) to set on the SOAP channel module CallSapAdapter property ignoreDuplicate to true in the module processor.
    I've implemented this as suggested however found the problem persists. I'm still receiving an HTTP 500 error.
    Your help is much appreciated solving this problem.
    Thanks
    Harald

    As there was a bugfix recently, make sure that you have installed the latest patch.
    If this does not work, open an OSS ticket for this issue.
    Stefan

  • Help with solution for receiver axis soap multipart

    Hi everybody.
    I've read many questions made by people to this forum with no possitive results to my issue.
    I'm developing a simple scenario : RFC>XI>Webservice in a sync way. I call a FM in an R3
    backend and i must retrieve a string from the webservice.
    First thing i've noticed is that the webservice only works if i set the external definition of it
    in RPC mode. If not, i get the error 'method retrieveData' not found.
    Second thing is that conventional SOAP receiver adapter doesn't work. I must use AXIS option.
    So, i must use RPC mode with AXIS receiver.
    No i've met another problem. When i check sxi_monitor, i have my FM response empty. This is because
    i'm not retrieving the same message that is defined in the webservice. I retrieve a multipart
    message with 3 parts : document-0, document-1 and document-2. I think that response message
    mapping is not working because as document-0 comes a different structure that the one defined
    in message mapping.
    These are the the things i've tried :
    Use of Payloadwapbean in receiver soap axis adapter. I can't put as document-0 the one that has the field i need.
    I tried with ABAP-Mapping but when i try to find the field <name>, is not there.
    Now, i'm thinking in other two solutions. first, develop a module to enhace the SOAP axis receiver.
    First question about this .. will i have the 3 'attachments' so i can get the <name> field?
    Can i use AXIS handlers to get the complete payload (i've read abput it but i don`t understand
    how to do it)?.
    Kind regards,
    Inigo

    Hi again,
    This is what i get in SXI_MONITOR.
    In payloads, i have 3 :
    document-0
    document-1
    document-2
    Double clicking in document-0, i get :
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns1:ZF_ARQ_DOCUMENTUM_WEBS.Response xmlns:ns1="urn:sap-com:document:sap:rfc:functions">
    - <DATOS>
      <item />
      </DATOS>
      </ns1:ZF_ARQ_DOCUMENTUM_WEBS.Response>
    This is the answer of the message mapping, but is empty.
    Double clicking in document-1 i get :
      <?xml version="1.0" encoding="UTF-8" ?>
    - <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:RetRecuperar" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://model.servicio.procop.sgce.aragon.es" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <datos xsi:type="xsd:base64Binary">SUkqANQAAABX</datos>
    <retorno href="#id1" />
      </multiRef>
    Here is the field i need, 'datos'.
    Finally, in document-2 i get :
      <?xml version="1.0" encoding="UTF-8" ?>
    - <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Retorno" xmlns:ns3="http://model.servicio.procop.sgce.aragon.es" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <errorMessage xsi:type="xsd:string" />
      <excepcion xsi:type="xsd:string" />
      <retCode xsi:type="xsd:string">OK</retCode>
      <errorCode xsi:type="xsd:string" />
      </multiRef>
    If i use a test program, such as SOAPUI, i get this answer :
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Body>
          <ns1:recuperarResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:MiNameSpacePrueba">
             <recuperarReturn href="#id0"/>
          </ns1:recuperarResponse>
          <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:RetRecuperar" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://model.servicio.procop.sgce.aragon.es">
             <datos xsi:type="xsd:base64Binary">SUkqANQAAABX</datos>
    <retorno href="#id1"/>
          </multiRef>
          <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Retorno" xmlns:ns3="http://model.servicio.procop.sgce.aragon.es" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
             <errorMessage xsi:type="xsd:string"/>
             <excepcion xsi:type="xsd:string"/>
             <retCode xsi:type="xsd:string">OK</retCode>
             <errorCode xsi:type="xsd:string"/>
          </multiRef>
       </soapenv:Body>
    </soapenv:Envelope>
    I don't know why i'm getting these 3 documents because in message mapping, the response method of the WSDL is completely different than the message i'm retrieving as the answer.
    Thank you for your answers,
    Kind regards,
    Inigo.

  • Axis SOAP Adapter + Certificate

    Hi,
    We developed an interface where the receiver adapter access a web service (https), which uses user and certificate authentication.
    Firstly we configured the "Transport Protocol" as "HTTP", but we got the error "Peer certificate rejected by ChainVerifier". We know that this error means that is missing this certificate in the server.
    However, if we test the same webservice on soapui, we need just to configure the username and password and the request works fine.
    As Axis Adapter uses the same libraries as soapui, we configured and deployed the aii_af_axisprovider.sda with all jars required. If we access http://server:port/XIAxisAdapter/MessageServlet, we can see that the required components are deployed and just the optional components Apache Addressing Apache Sandesha are missing.
    We have followed the "SAP Note 1039369 FAQ XI Axis", but we haven´t had success to find a way to solve our issue.
    Our question is: Can PI with Http (AXIS) work as soapui? We think that if soapui can request succefully the webservice without the certificate, PI should have the same success. Is it possible?
    Thanks in advance.
    Regards,
    Bruno

    Hi Yza,
    It was really helpful your tips. We made a contact with the company responsible by the WS and they sent to us a valid certificate assigned by a CA.
    We configured it in the WebAS KeyStorage (TrustCAs) and the interface worked perfectly.
    In summary, we invoked the WS on 3 ways:
    1 - Soapui - it wasn´t necessary to import the certificate. Probably at runtime, it configures the certificate into an own truststore. After executing the WS we could see the certificate accessing the option "SSL Info".
    2 - Java Code - it worked just after I imported the certificate, even being a expired certificate. I imported it running:
    keytool -import -v -trustcacerts -alias xxxx_alias -keystore D:j2sdk1.4.2_11jrelibsecuritycacerts.jks
    * -keypass changeit -file xxxx.cer
    And I coded this:
    System.setProperty("javax.net.ssl.trustStore", "D:\j2sdk1.4.2_11\jre\lib\security\cacerts.jks");
    System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
    Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    URL url = null;
    HttpURLConnection connection = null;
    try {
         //Create connection
         url = new URL(properties.getProperty("endpoint"));
         connection = (HttpURLConnection) url.openConnection();
         connection.setRequestMethod("POST");
         connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
         connection.setRequestProperty("Authorization", "Basic " + credential);
         connection.setUseCaches(false);
         connection.setDoInput(true);
         connection.setDoOutput(true);
         String urlParameters = "<soapenv:Envelope xmlns:soapenv=...";
         //Send request
         OutputStream wr = connection.getOutputStream();
         wr.write(urlParameters.getBytes());
         wr.flush();
         wr.close();
         //Get Response
         InputStream is = null;
         try {
          is = connection.getInputStream();                         
         } catch (Exception e) {
          is = connection.getErrorStream();
         BufferedReader rd = new BufferedReader(new InputStreamReader(is));
         String line;
         StringBuffer response = new StringBuffer();
         while ((line = rd.readLine()) != null) {
           response.append(line);
           response.append('
         rd.close();
         } catch (Exception e) {                    
              e.printStackTrace();
         } finally {
              if (connection != null) {
                   connection.disconnect();
    3 - PI - it worked just after I imported a valid certificate.
    Until we got the valid certificate, I installed an Apache Tomcat and AXIS framework and published the above Java Class on it, creating a WS. So we were invoking the target WS calling this WS on Apache Tomcat to workaround our issue until we have a valid certificate. So our interface was working like this:
    ABAP Proxy -> WS on Apache Tomcat -> WS Target
    Maybe I got lost in some words during the explanations. I hope now it is clearer for you.
    Thank you very much for your attention.
    Regards,
    Bruno

  • Error while posting data to sender axis soap adapter

    Hello,
    I am trying to post the data to following url
    http://sapxis:50000/XIAxisAdapter/MessageServlet?senderService=temp&interface=os%5Ftest&interfaceNamespace=http%3A%2F%2Ftest%2Ecom%2Fxi%2FPOC
    But I am getting following error:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Body>
          <soapenv:Fault>
             <faultcode>soapenv:Server.generalException</faultcode>
             <faultstring>failed to invoke the module proessor; nested exception is:
         com.sap.aii.af.service.cpa.CPAException: Couldn't retrieve inbound binding for the given P/S/A values: FP=;TP=;FS=temp;TS=null;AN=os%5Ftest;ANS=http%3A%2F%2Ftest%2Ecom%2Fxi%2FPOC;</faultstring>
             <detail>
                <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">sapxis</ns1:hostname>
             </detail>
          </soapenv:Fault>
       </soapenv:Body>
    </soapenv:Envelope>
    Please help.
    Thanks in advance,
    Beena.

    Thanks Stefan.
    Yes, sender agreement is there and it is also there in CPA Cache.
    CPAObject: (Binding) keys: ObjectId=02cb8f5717cc35e582f072b26138a0f8 values: Direction=I
    ActionNamespace=http://test.com/xi/POC ToParty= FromParty= HeaderMappingConfig=null MappedActionNamespace=null MappingClassName=null ActionName=os_test AdapterNamespace=http://sap.com/xi/XI/System MappedActionName=null ToService= AdapterSWCV=b38bcd00e47111d7afacde420a1145a5 FromService=temp AdapterType=SOAP MappingId=null Attributes=<?xml version="1.0" encoding ...
    http://sapxis:50000/XIAxisAdapter/MessageServlet page also shows the status OK for required components and Warning for optional components.
    Am I missing something?
    Thanks,
    Beena.

  • Receiver SOAP Adapter (HTTP AXIS)

    Hi Experts,
    I need to use receiver soap adapter to communicate with a WebService, actually it is a AXIS service i can see when i give the soap url in web browser.
    my question is for axis service, does it mean i have to use HTTP AXIS in the receiver channel to request the response for web service server? Can i use HTTP only without AXIS?
    when i use SoapUI to test the webservice, it works fine. But when i use receiver soap adapter with HTTP (without AXIS), it is responding with the belwo error.
    <sap:Error ...>
      <sap:Category>Application</sap:Category>
      <sap:Code area="UNKNOWN">APPLICATION_ERROR</sap:Code>
      <sap:AdditionalText>Application Fault</sap:AdditionalText>
      <sap:ApplicationFaultMessage namespace="http://sap.com/xi/XI/System/Axis/sample">host name</sap:ApplicationFaultMessage>
      <sap:Stack/>
    </sap:Error>
    Experts, please help on this, the major question is HTTP AXIS is required when target web service is an AXIS service?
    Thanks in advance.
    Regards,

    >>my question is for axis service, does it mean i have to use HTTP AXIS in the receiver channel to request the response for web service server? Can i use HTTP only without AXIS?
    You are going to consume webservice. You can use standard SOAP adapter itself to consume the webservice that is built with axis framework.
    Do you have some specific user authentication procedures like SAP Assertion Tickets, username token etc and some specific encapsulation formats (MIME, DIME, MTOM),WS Reliable Messaging  and so then you need SOAP Axis adapter. If you need to consume webservice with standard transport protocol (HTTP or HTTPS) and client authentication etc , our standard SOAP adapter is more than enough.
    Refer this link what axis soap adapter supports

  • Receiver Soap Adapter and multipart messages

    Dear SAP XI experts.
    I have a scenario where I should create multipart message in an integration process and send it to a receiver using soap adapter. Is it possible to have two message types, one for main payload and one for attachment?
    In my case I know I have to switch on 'Do Not Use Soap Envelope' and 'Keep Attachments' parameters in communication channel configurations. Anything else needed in this side? For example in Adapter Module configurations?
    Is this scenario: To create multipart message in an integration process and to send it using receiver soap adapter, possible at all?

    Hi,
    >>>>In my case I know I have to switch on 'Do Not Use Soap Envelope' and 'Keep Attachments' parameters in communication channel configurations. Anything else needed in this side? For example in Adapter Module configurations?
    check question:
    My web service expects a SOAP with multiple elements in the SOAP body. How can I create such SOAP message?
    from SAP note: 856597
    and you will know everything
    Regards,
    michal

  • How to configureAxis SOAP Adapter

    HI
    Can any body help me how i can configure sender side synchronous Axis SOAP Adapter.
    regards
    sandeep

    HI ,
    Facing the error , "Received HTTP response code 500 : Error during conversion of XI message"
    This is the fist time i  am configuring the   sender soap ( Axis Framework in the SOAP Adapter) (Quality of service Best effort) communication channel  and i am getting the above error did any body face this error.
    regards
    sandeep

  • How to save the Response message from SOAP adapter

    Dear Friends,
       I am sending the FIle details webserver.here sender is FILE adapter and receiver is SOAP adapter.
    FIle to SOAP working successfully, but I need response from SOAP.
    Sender QoS is BE, so the response is coming to XI, but in SXMB_MONI it is showing DO YOU WANT TO SAVE IT or DISPLAY IT.
    my requirement is response message is directly updated in XI system.
    For response Can I use BPM or which method I need to use.
    Please suggest me  how to do the resonse message(SOAP to FILE).
    Regards,
    Shalini Shah.

    Sender QoS is BE,
    File adapter does not support sync communication. Therefore the scenario won't work as it is.
    What are you planning to do with the response? If you want to process is further, then:
    1. One way without BPM would be use of adapter module.
    File - RFC - File without a BPM - Possible from SP 19.
    2. Or you may use BPM with Async Sync bridge
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    Regards,
    Prateek

Maybe you are looking for

  • Business Packages for CRM 2006s (5.2)

    We are on CRM 2006s (5.2) and aside from the Best Practice (BP) for CRM 5.2 (v1.52) where can I download Business Packages for CRM 2006s (5.2)? Regards, James

  • Error DB13

    Hi, I am trying to take the Archive log backup through DB13 I schedule accordingly in the Development system for testing. My landscape is on SUN Solaris 10. I am able to do the backup using BRtools.* This job failed & below is the log BR0252E Functio

  • Different widths for Spry Menu Submenu items

    On the Customize this widget page for menus, a new style was suggested for submenu items, to make some of them less wide. This code below was suggested. How do we attach the new style to the submenu items? Clicking on each submenu text that's open, a

  • Warning Hardware RAID ALERT: (0x0008/1) - Battery removed' (attempt #0)

    Warning <Hardware> RAID ALERT: (0x0008/1) - Battery removed' (attempt #0) Please, help me to understand what it means. Server Ironport c350. Every restart I can see this event in system.current in /system_log/

  • Raid appears full when it isn't?

    Hello, New to a Middle School site, not experienced with our server setup. We have an xserve running 10.7.5 with two RAIDS. RAID1 holds the home folders for our students. RAID 2 is not being used for anything as far as I can tell. Finder and the Serv