Fault Message with JDev 9.0.3

Hello,
I'm using JDev 9.0.3 and I want to create with wizard a Web Service that response with a customized fault message. Is it possible?
If is possible, someone knows where may I look for some examples?
Thanks all...
Regards,
Mirko

What you can do with Oracle9iAS Web Services is create a method (or one that throws an error like) like the following:
public void customError(String p1) throws Exception
throw new java.io.IOException ("Custom error: " + p1);
Pretty much you can thrown any error the the string part of the error will come back in the SOAP Fault.
If you need to do more customized fault handling, you can use Oracle SOAP (based on Apache SOAP) instead of Oracle9iAS Web Services (see below for doc references). This gives you more flexibility but unfortunately puts you into a deprecated stack of software - Oracle is moving to JAX-RPC going forward as an evolution of Oracle9iAS Web Services.
However, if you need it tactically to get the job done, you can consider it. See the following two bits of doc:
http://download-west.oracle.com/docs/cd/A97688_06/generic.903/b10004/oraclesoap.htm#634093
(see http://download-west.oracle.com/docs/cd/A97688_06/generic.903/b10004/oraclesoap.htm for doc covering the entire Oracle SOAP implementation) and:
http://xml.apache.org/soap/docs/guide/errors.html
Mike.

Similar Messages

  • Fault message with 'Server error'

    Hi all,
    I have the following problem in PI.
    The scenario is a synchronous interface, in which messages are send to PI using SOAP adapter. These are sent by proxy to ECC, and afterwards a reponse message is sent back.
    So it's a SOAP-Proxy scenario with a synchronous interface and a request/response message.
    I'm testing this interface using SOAPUI.
    In PI the request and response messages are processed succesfully, however in SOAPUI I get the following error message (fault message), which is also shown in the communication channel logging.
    <!--see
    the documentation-->
      <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
         <SOAP:Fault>
           <faultcode>SOAP:Server</faultcode>
           <faultstring>Server Error</faultstring>
           <detail>
              <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                  <context>XIAdapter</context>
                  <code>ADAPTER.JAVA_EXCEPTION</code>
                  <text>java.lang.ClassCastException
    The fault message contains the error: Server Error.
    Does anyone have an idea what causes this?
    Thanks in advance any help!
    Regards,
    Marco

    Hi Eng Swee
    The audit log doesn't show any errors. The java.lang.ClassCastException erro is shown in the processing details of the communication channel (column explanation)
    The last step in the audit log is : "The message status is set to DLVD"
    I think steps are missing after this, that sent the response message back to SOAPUI.
    I also had a look in a similar interface I've build earlier, in which the additional last steps are:
    SOAP: Response message leaving the adapter
    SOAP: Processing completed
    So for some reason the response message is not sent back from the adapter.
    Could this issue be related to the test with SOAPUI and the version used?
    The SOAPUI version is 5.0 and the PI version is 7.0
    Regards,
    Marco

  • Fault Messages with file to file

    Hi frnds,
    I have one doubt can i use Fault messages in file to file Asynchronous scenario if it possible please share the how to do the Scenario with Fault messages.
    Regards,
    Rajendra

    Hi
    For file to file async scenario, i don't think we can use fault message.
    But it can be used with proxy async scenario as per the below blog
    Fault Message Types - A Demo (Part 1)
    Regards
    Osman

  • Segmentation fault message with EXPDP

    Hi everybody,
    I have issued the command EXPDP...
    expdp user_30jun/user_30jun DIRECTORY=datapump DUMPFILE=expdp_export.dmp EXCLUDE=TABLE:\"IN \(\'TABLE_A\', \'TABLE_B\', \'TABLE_C\'\)\" NOLOGFILE=Y
    The system displays a message "Segmentation fault" and then aborts. I could not find out the cause. Please help me out!
    Thanks,
    Aswin.

    Please find below the snapshot...
    [oracle@localhost bin]$ expdp user_30jun/user_30jun DIRECTORY=datapump DUMPFILE=expdp_export.dmp EXCLUDE=TABLE:\"IN \(\'TABLE_A\', \'TABLE_B\', \'TABLE_C\'\)\" LOGFILE=log.log
    Export: Release 10.1.0.2.0 - Production on Monday, 30 June, 2008 17:27
    Copyright (c) 2003, Oracle. All rights reserved.
    Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Segmentation fault
    [oracle@localhost bin]$
    The logfile log.log which has been generated at datapump directory has no contents!
    Message was edited by:
    Aswin.

  • Fault message in sender SOAP scenario

    Hi mates,
    I've a o/b synch MI which is exposed as a web service. I've specified the fault message with faultcode, faultstring, faultactor and detail. I've a BPM as the receiver for this synch infterface. This BPM implements synch-asynch bridge.
    Now the question is...How can I specify that a particular fault message needs to be returned to the SOAP caller. I can send the response for the SOAP caller using the send step with mode 'Closes S/A bridge'.
    I appreciate you inputs.
    thx in adv
    praveen

    Moorthy,
    I've the FM in my BPM. But...how can I append this to Response message as these have two different MTs?
    Do you mean to say my response message should have a node for fault message data?
    I'm trying to implement sth like in this blog <a href="/people/sap.user72/blog/2006/01/16/xi-propagation-of-meaningful-error-information-to-soap-client">Propagation of meaningful error information to SOAP Client</a>
    To achieve FM in SOAP scenario, should I be using <b>only</b> a non-BPM receiver like a R/3 system using FM with exception as the receiver? Can this be not possible if I use BPM as receiver?
    thx in adv
    praveen

  • Fault message in synchronous send step in BPM

    Hi,
    When executing a synchronous send step in BPM it is possible to handle application errors (fault messages) with an exception branch. But how do you get hold of the actual data in the Fault message(faultText, faultURL, faultDetail etc) for further processing (mapping)?
    Kind regards Johan

    Johan,
    u have to define another container element in integration process.
    For that container element an Async Abstract interface has to created with falult message as the message.
    Do u have the fault message defined already...
    Also go through this thread.
    Fault message handling in BPM
    -Naveen.

  • Soap fault message handling in XI

    Hi,
    I am using axis 1.4. SAP XI is my clinet. My wsdl file as below
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://ws.example.com/service"
       xmlns:wns="http://ws.example.com/service"
       xmlns:tns="http://ws.exampleenterprise.com"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
             <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                    targetNamespace="http://ws.exampleenterprise.com"
                    elementFormDefault="qualified">
                     <xs:complexType name="SecrtySbj">
                             <xs:sequence>
                                     <xs:element name="usrname" type="xs:string"/>
                                     <xs:element name="pswrd" type="xs:string"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:complexType name="AuthenticateRequest">
                             <xs:sequence>
                                     <xs:element name="secrtySbj" type="tns:SecrtySbj"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="authenticateRequest" type="tns:AuthenticateRequest"/>
                     <xs:complexType name="AuthenticateResponse" >
                             <xs:sequence>
                                     <xs:element name="sessnId" type="xs:string"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="authenticateResponse" type="tns:AuthenticateResponse"/>
                     <xs:complexType name="customFault">
                             <xs:sequence>
                                     <xs:element name="customCd" type="xs:int"/>
                                     <xs:element name="customMsg" type="xs:string" minOccurs="0"/>
                                     <xs:element name="customExcp" type="xs:string" minOccurs="0"/>
                             </xs:sequence>
                     </xs:complexType>
                     <xs:element name="customFault" type="tns:customFault"/>
             </xs:schema>
    </wsdl:types>
    <wsdl:message name="authRequest">
       <wsdl:part name="parameters" element="tns:authenticateRequest"/>
      </wsdl:message>
      <wsdl:message name="authResponse">
       <wsdl:part name="result" element="tns:authenticateResponse"/>
      </wsdl:message>
      <wsdl:message name="CustomFault">
       <wsdl:part name="CustomFault" element="tns:customFault"/>
      </wsdl:message>
      <wsdl:portType name="AuthenticateServiceInterface">
            <wsdl:operation name="authenticate">
        <wsdl:input message="wns:authRequest" />
            <wsdl:output message="wns:authResponse" />
        <wsdl:fault name="CustomFault" message="wns:CustomFault"/>
       </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="AuthenticateServiceSoapBinding" type="wns:AuthenticateServiceInterface">
              <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
       <wsdl:operation name="authenticate">
        <soap:operation soapAction=""/>
        <wsdl:input>
         <soap:body use="literal"/>
        </wsdl:input>
            <wsdl:output>
                    <soap:body use="literal"/>
            </wsdl:output>
            <wsdl:fault name="CustomFault" >
                       <soap:fault name="CustomFault" use="literal" />
               </wsdl:fault>
       </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="AuthenticateServiceService">
       <wsdl:port name="AuthenticateService" binding="wns:AuthenticateServiceSoapBinding">
        <soap:address location="http://10.236.14.6:8080/axis/services/AuthenticateService"/>
       </wsdl:port>
      </wsdl:service>
    </wsdl:definitions>
    Axis generates the soap fault as below in detail tag as below
    <ns1:customFault xmlns:ns1="http://ws.examplenterprise.com">
    <ns1:customCd>123</ns1:customCd>
    <ns1:customMsg>Password is wrong</ns1:customMsg>
    <ns1:customExcp>CustomException</ns1:customExcp>
    </ns1:customFault>
    They are getting error like below while getting the fault message.
    <SAP:ApplicationFaultMessage namespace="http://ws.exampleenterprise.com">customFault<SAP:ApplicationFaultMessage>
    Question: Why it is throwing "ApplicationFaultMessage" for fault messages? is there any error in wsdl file in defining the elements? or style has to be different? or is it an namespace issue in the wsdl?
    Note: They are able to do it sucessfull for the response message.

    Hi,
    The answer is in your Question itself.
    XI Sequence
    1.First step is to identify the wsdl:Message element with the namespace http://ws.example.com/service
    2.The next step is to go to the part element in http://ws.exampleenterprise.com and map the fault message.
    To be simple in your case http://ws.example.com/service is the namespace of Fault Message and http://ws.exampleenterprise.com is the namespace of the fault message payload  (Fault XML Message).
    So even though the Fault XML Message has the namespace http://ws.exampleenterprise.com ,but if the fault namespace doesnot come with http://ws.example.com/service then Fault will not be triggered and processed in XI.
    I hope you get the difference between the two namespaces used and the implications of them.
    Fault is entirely different from respone.
    Its like exception in java. If you donot catch the correct exception, will the exception raised be caught? Similarly if your SOAP service doesnot invoke the fault message with correct namespace (http://ws.example.com/service ), you cannot invoke/catch the fault message in XI.
    Regards,
    Sudharshan N A

  • Custom fault message from OSB is not throw in BPEL

    Hi,
    I have created a custom fault error in OSB which is sent to BPEL.
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
    <env:Fault>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    If my namespace in FAULT tag is "http://schemas.xmlsoap.org/soap/envelope/",
    message is understood as fault IN BPEL. But if I change namespace, BPEL understands as reply message.
    How can I use my custom fault message with different namespace as http://schemas.xmlsoap.org/soap/envelope/ ?
    Regards,

    SOAP Fault has a defined structure and defined namespaces. It does provide a placeholder for custom data though. Just like you can not change the namespace of Envelope of Body, similarly you cant change the namespace of Fault(if you want it to be recognized by the client apps). Any custom data you want to send in the SOAP Fault needs to be set as a child of 'detail' element of SOAP Fault. This custom data can have any namespace you wish. This Custom XML will be the element you define as Fault element in your WSDL
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
    <env:Fault>
    <faultcode>env:Client</faultcode>
    <faultstring>some error string</faultstring>
    <faultactor>somedata</faultactor>
    <detail>
    {here you can put your custom XML content in any namespace which you have defined in the WSDL}
    </detail>
    </env:Fault>
    </env:Body>
    </env:Envelope>

  • 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

  • Fault Message Mapping for SOAP Scenario

    Hi ,
    I have configured a Proxy to SOAP synchronous scenario. The scenario is working fine. Now I need to map the fault message and display the message in SAP in case of any errors. I have used the standard Fault message. But I dont have any message from the WSDL which I can map to the standard fault message. Is it that we need to tell the wenservice team to modify the WSDL to include the fault message or is there any other way out to acheive the same.
    Thanks
    Amit

    >>> Is it that we need to tell the wenservice team to modify the WSDL to include the fault message or is there any other way out to acheive the same?
    Fault message is to provide meaningful message to the other end if there is a validation error or business exceptions or so...
    a) You are importing WSDL of the third party and using it in soap receiver target side.
    b) Normally it is best practice to create a WSDL which contains request, response and fault message. if your wsdl has fault message type declared then you can map the wsdl fault message with your proxy side fault message(which you can create). Please note you rely on the third party wsdl. Third party WSDL must have application logic coded to support fault message in case of application error occurs. Example if there is a validation that does not go through then their application logic must populate data in the fault message of wsdl. Then only if we map the wsdl fault msg to our proxy fault msg, we get meaningful fault details.
    If your target WSDL does not support fault mesg, it is not going to be helpful at all.

  • Synchronous File- Soap scenario with fault message

    Hi!
    I have a File to Soap synchronous scenario.
    All is right when no exception is returned by the web service.
    I want to use fault messages to catch thoses exceptions, so I have added fault message in message interfaces and in the mapping program in the interface mapping.
    Now, when the web service return an exception like :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
       <soap-env:Body>
          <soap-env:Fault>
             <faultcode>soap-env:Client</faultcode>
             <faultstring xml:lang="en">NOT_CREATED</faultstring>
             <detail>
                <n0:Z_WS_CREATE_WAGON.Exception xmlns:n0="urn:sap-com:document:sap:rfc:functions">
                   <Name>NOT_CREATED</Name>
                   <Text> does not have packaging material type and is therefore not a pack.mat.</Text>
                   <Message>
                      <ID>HUSELECT</ID>
                      <Number>041</Number>
                   </Message>
                </n0:Z_WS_CREATE_WAGON.Exception>
             </detail>
          </soap-env:Fault>
       </soap-env:Body>
    </soap-env:Envelope>
    I get the following error :
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
       <SAP:Category>XIServer</SAP:Category>
       <SAP:Code area="MAPPING">NO_MAPPINGPROGRAM_FOUND</SAP:Code>
       <SAP:P1>http://www.arcelormittal.com/radis/rad IM_RAD_to_ZWsCreateWagon</SAP:P1>
       <SAP:P2 />
       <SAP:P3 />
       <SAP:P4 />
       <SAP:AdditionalText />
       <SAP:ApplicationFaultMessage namespace="" />
       <SAP:Stack>Interface mapping http://www.arcelormittal.com/radis/rad IM_RAD_to_ZWsCreateWagon does not exist in runtime cache</SAP:Stack>
       <SAP:Retry>N</SAP:Retry>
    </SAP:Error>
    My mapping program for fault message is well defined (I tested it with the exception message received from the web service).
    I have also refresh caches, but without success...
    Can anyone help me ?
    Thanks in advance,
    Laurence

    Hey Laurence,
    A File adapter is aysnchronous u cant use for synchrous because it cant acknwlodge the response it gets or itt sends.
    regarding two asynchoronus
    1. file to SOAP asychn.
    2. triggger the second one if SOAP has exception then pass the error from SOAP to New File.
    using BPM we have to use Transportion level acknowledgments
    please reward points if it helps
    Regards
    Sreeram.G.Reddy

  • Sync/Async bridge via JMS with FAULT messages

    Hello all,<br><br>
    I set up a sync/async bridge scenario with using of JMS communication channel (SAP - JMSReceiverCC - JMSServer and application - JMSSenderCC - SAP). The normal communication works fine.<br>
    But what we can not solve is the Fault Message handling. If there is a application error behind the JMS, a fault message is generated instead of proper application response and sent back to XI. Without any additional setup of JMS Sender CC the processing of the message ends with "MAPPING - EXCEPTION_DURING_EXECUTE", because normal "response mapping" is executed instead of "fault message mapping". This is correct behavior without any discussion.<br><br>
    [SAPhelp|http://help.sap.com/saphelp_nw70/helpdata/en/45/202845de34072ce10000000a155369/frameset.htm] says that there are 2 module parameters to be set : fault, faultNamespace. The description is rather vague, so let's see, what the "NotifyResponseBean" does, when parameters fault/faultNamespace are filled:<br><br>
    <pre>if(fault != null && faultNamespace != null)
      if(faultNamespace.equals("http://sap.com/xi/XI/System"))
        ((XIMessage)message1).setMessageClass(MessageClass.SYSTEM_ERROR);
        ((XIMessage)message1).setError(fault, "no additional information");
      } else
        ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_ERROR);
        ErrorInfo errorinfo = message1.createErrorInfo();
        errorinfo.setAttribute("ApplicationFaultInterface", fault);
        errorinfo.setAttribute("ApplicationFaultInterfaceNamespace", faultNamespace);
        errorinfo.setAttribute("ErrorCode", fault);
        errorinfo.setAttribute("AdditionalErrorText", "no additional information");
        message1.setErrorInfo(errorinfo);
    } else
      ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_RESPONSE);
    }</pre><br>
    The code is pretty straight forward so one could assume, that it's the name and namespace of inbound synchronnous message interface what is supposed to be filled in the values of each parameter. And from that kind of information SAP XI can evolve how to handle the response, actually the fault.<br>
    Unfortunatelly the real situation is different - every time the fault message is generated and sent back to XI, the response is correctly corelated with the request message, "WaitResponseBean" and "NotifyResponseBean" are finished correctly and the processing crashes in messaging class on following exception:<br><br>
    java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:592) at
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    com.sap.aii.adapter.xi.ms.XIMessage.updateHeaders(XIMessage.java:4244) at
    com.sap.aii.adapter.xi.ms.XIMessage.getTransportHeaders(XIMessage.java:570) at
    com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:212) at
    com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:337) at ...
    <br><br>
    Is there anyone, who can put more light on JMS sync/async bridge fault handling ???
    <br><br>
    Thank you ...<br>
    Regards
    Tomas

    Hello again,
    I proceed in investigation little more, but the main problem has not been solved. I found that the problem is not even in WaitResponseBean (placed in JMCReceiverCC). This bean is woken up properly on base of proper CorrelationID. See the log:
    2009-10-15 11:00:33 Success WRB: entering WaitResponseBean
    2009-10-15 11:00:33 Success WRB: retrieving the message for f1ea1fc0-b96d-11de-9b68-00144f4acd86 ...
    2009-10-15 11:00:46 Success WRB: retrieved the message: ApplicationError
    2009-10-15 11:00:46 Success WRB: leaving WaitResponseBean
    I think, that the problem is somewhere within main messaging functionality. I suppose that on base of exception message:
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    which is generated.
    Any ideas or comments ?
    Thank you in advance.
    Regards
    Tomas

  • Problem with SOAP FAULT messages

    Hi,
    I'm developing the flash interface for a .NET application.
    The client side (flash) communicate with server side (.NET) by web
    services. The problem is that when the server side send a Fault
    message flash breaks telling "Unable to connect to
    endpoint........". In this case I need to know the error message
    send by the server but the fault.faultstring is undefined.
    Here the server Fault message:
    HTTP/1.1 500 Internal Server Error.
    Date: Wed, 23 Aug 2006 09:07:10 GMT
    Server: Microsoft-IIS/6.0
    X-Powered-By: ASP.NET
    X-AspNet-Version: 1.1.4322
    Cache-Control: private
    Content-Type: text/xml; charset=utf-8
    Content-Length: 419
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="
    http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="
    http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="
    http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <soap:Fault>
    <faultcode>SoapHeader</faultcode>
    <faultstring>The userid: xxxx is
    invalid</faultstring>
    <detail />
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>
    And this the code that handle the fault case:
    pendingcall.onFault = function (fault:Object){
    rootObj.gbl_logger.log("WS Fault: "+ fault.faultstring ,
    10);
    As you can see the real faultstring is "The userid: xxxx is
    invalid" but in the faultstring property of the fault object I
    found "undefined".
    I've read many posts that report that the problem can be
    solved in the server side modifing the HTTP HEADER from 500 to 200.
    Unfortunately I can't access the server side code. Exists a way to
    resolve the problem in the client side? Seems it is a Flash bug as
    the SOAP 1.1 specs tells that all SOAP Fault messages must carry a
    HTTP 500 header. Exists some patch that solve the problem?
    Thanks.

    Hi ,
    Thanks for joining the Community.
    Please get in touch so we can resolve this issue for you.
    Click here for contact details.
    Thanks
    James

  • SOAP adapter engine with system error, problem with fault message.

    HI,
    I have IDOC -> PI -> SOAP scenario.
    Idoc to PI is async. I have no problem in receiving the idoc in PI. The message mapping is carried out and sent to the adapter engine. I can also see the technical routing payload. It is sucessful at XML monitoring in SXMB_MONI.
    The error is at PI -> SOAP.
    I have wsdl provided by the receiver webservice. Which I have imported.
    And created a service interface against this wsdl. I tried changing it to both sync and async.
    I have also provided fault message.
    I have set a receiver soap communication channel and provided the target URL like "http://xxx/services" and soap
    action = processDocument. Also provided user id and password.
    I have a
    Sender Agreement
    Receiver determination
    Interface determination
    Receiver Agreement
    I check in RWB adapter engine, this message goes to system error. The error log is as shown at the bottom.
    When I see the message content, the SOap document shows me the details about IDOC, Instead I feel it should match
    with the wsdl, where they have specified the corresponding interface name and address location etc.Please correct me.
    How does the receiver know which service interface is it? The Service Interface which I created in the ER is
    different from the WSDL, Does this have to be same? I see that the soap document in the adapter engine has the
    Service interface name which I created in the  ER. Where in the document the Reciever interface name is sent?
    Where can I see the generated soap document for the receiver?
    Is there some setting/configuration required in PI for this to work?
    I tried using the tcpgw to see the error. If I dont provide the service interface name in the communication channel
    then I get the following error in the TCPGW. "The service cannot be found for the endpoint reference"
    When I provide the service interface name in the communication channel I get a valid fault message.
    Similarly
    When I use SOAPUI, I can see the fault exception being return. The adapter engine doesnot show an equivalent message
    instead it goes into system error as shown at the bottom. I guess this is expected, if so what is the work around? (I found this weblog /people/alessandro.guarneri/blog/2011/01/10/soap-fault-in-sap-pi-hijack-it, do I need to implement this? Or use ALEAUD?
    The fault message what I see in SOAPUI has the below format.
    <soapenv:Fault xmlns:axis2ns1="http://schemas.xmlsoap.org/soap/envelope/">
             <faultcode>axis2ns1:Server</faultcode>
             <faultstring>nested exception is: psdi.util.MXApplicationException: BMXAA7136E - Validation failed when the
                                database default values were set. See the associated message for more information.
               BMXAA4190E - Country NZ is not in the value list.</faultstring>
             <detail>
                <Exception>org.apache.axis2.AxisFault: nested exception is: psdi.util.MXApplicationException: BMXAA7136E
                          - Validation failed when the database default values were set. See the associated message for more information.
         BMXAA4190E - Country NZ is not in the value list.
                /Exception>
             </detail>
      </soapenv:Fault>
    And the fault message in my ER service interface is stanadard datatype ExchangeFaultData, which is different from
    the above. Is this the problem? Can I change the data type here to be the same as above?
    Audit log in the RWB adapter engine.
    Time Stamp Type Description
    30.09.2011 15:10:57 Information MP: processing local module Localejbs/sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean
    30.09.2011 15:10:57 Information SOAP: request message entering the adapter with user J2EE_GUEST
    30.09.2011 15:10:57 Information SOAP: completed the processing
    30.09.2011 15:10:57 Information SOAP: sending a delivery error ack ...
    30.09.2011 15:10:57 Information SOAP: sent a delivery error ack
    30.09.2011 15:10:57 Error MP: exception caught with cause
    com.sap.engine.interfaces.messaging.api.exception.MessagingException
    30.09.2011 15:10:57 Error Adapter Framework caught exception: null
    30.09.2011 15:10:57 Error Delivering the message to the application using connection
    SOAP_http://sap.com/xi/XI/System failed, due to:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException.
    30.09.2011 15:10:57 Information The message status was set to WAIT.
    30.09.2011 15:10:57 Information The asynchronous message was successfully scheduled to be delivered at Fri Sep 30
    15:15:57 NZDT 2011.

    I tried changing it to both sync and async.
    I have also provided fault message.
    dont feel that you need to do above steps.
    I have a
    Sender Agreement
    ideally you dont need a sender agreement (and a channel) for IDOC --> PI flow.
    When I see the message content, the SOap document shows me the details about IDOC
    this is fine...you may see fields as seen in EDI_DC40 of the IDOC...
    How does the receiver know which service interface is it?
    receiver need not know about the SI created in PI.
    The Service Interface which I created in the ER is
    different from the WSDL, Does this have to be same?
    you should the WSDL (external definition) as the Request Message in your service interface.
    Is there some setting/configuration required in PI for this to work?
    nothing specific...AFAIK
    I have set a receiver soap communication channel and provided the target URL like "http://xxx/services" and soap action
    can you open the URL from Internet explorer...from your machine or from the machine which is in the same network as your PI server?
    Things to check:
    WSDL structure in PI and in target system is exactly the same.
    does the target system require mesage in SOAP format (SOAP envelope - SOAP Header + SOAP body)?
    target system is up and running?

  • Interface-Mapping with a Fault Message Type

    Hi,
    we have an abap-proxy and some messages generated errors. The errors can be displayed via sxmb_moni. The proxy raises an "Application Error (Restart possible)".
    Now I wanna transform the generated fault message (of the proxy) with a message mapping and send the output to a file.
    My problem is, that it is not possible to define an interface mapping with the fault message as well as it is not possible to define a receiver determination.
    Any ideas?
    Thanks a lot
    Regards
    Wolfgang Hummel

    Hello
    As far as I know you can propogate the application error back to the calling application only in case of a Synch Interface? Are you making a Synch call where the proxy triggers a fault message,  if yes then all you need to do is to make the change in XI to have the fault message for both the outbound and inbound message interfaces and then a corresponding fault message mapping and select this in the Interface Mapping and then the fault message will be sent to the source / calling application.
    In the case of Asynch calls I don't think this is possible until you use a BPM. Have not tried this myself though.
    Regards,
    Bhavesh

Maybe you are looking for