Handling custom soap fault

I am trying to call a web service using the JPublisher generated pl/sql functions. The function works fine when there is no exception from the web service. However when the web service raises an exception (required by the business logic) I am receiving the following exception:
ORA-29532: Java call terminated by uncaught Java exception: java.rmi.RemoteException: javax.xml.rpc.soap.SOAPFaultException:Error occurred at
ORA-06512: at line 8
This is a valid exception. However I want to handle the exception and read the ErrorCode and ErrorMessage passed in the custom SOAP fault message. I want to know if there is any provision in JPublisher (SQLJ/JDBC) to handle (Custom) SOAP fault messages.

Hi,
Do you have a solution for this problem? I'm dealing with the same problem:
ORA-29532: Java call terminated by uncaught Java exception: java.rmi.RemoteException: javax.xml.rpc.soap.SOAPFaultException:
regards, Hans

Similar Messages

  • Handling of SOAP Faults in SOAP Clients consuming PI Web services

    Hi there,
    the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
    I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
    In particular the blogs
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI      - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
    XI: Propagation of meaningful error information to SOAP Client     - XI: Propagation of meaningful error information to SOAP Client
    have caused by attention.
    Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
    In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
    The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
    The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
    The questions I have are as follows.
    1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one    used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
    Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered     ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
    Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
    My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
    2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more    useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
    SOAP fault returned when using SOAP Sender adapter of AF
    <!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>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
         at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
         at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
         at com.sap.aii.af.ra.ms.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:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    SOAP fault using integrated SOAP adapter of PI IE
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>ABAP.PARSE_APPLICATION_DATA</code>
                   <text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564  XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
    There may already be a blog or thread and I just missed it.
    Any comments are welcome.
    Thanks. Dieter

    Hi Dieter,
    As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
    In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
    Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
    The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    Kind regards,
    Wojciech
    btw nice thread

  • Creating custom soapenv:Fault by OSB 11g.

    Hello,
    I am working on a message flow on soap proxy service which will generate a custom soap fault alrady defined on it's wsdl.
    On the error handler if I replace the $body variable with the expected soap fault it returned it withing the soapenv:Body and not soapenv:Fault element.
    Here the response with an error:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header xmlns:mes="http://www.test.com/MEBS/Interfaces/ManageAccountReceivable/AccountReceivableManagement/v1/message"/>
       <soapenv:Body xmlns:mes="http://www.test.com/MEBS/Interfaces/ManageAccountReceivable/AccountReceivableManagement/v1/message">
          <mes:FindAndGetCustomerAccountFault>
             <fault>
                <label>002168</label>
                <FaultDetail>
                   <fieldName>ERREUR</fieldName>
                </FaultDetail>
             </fault>
          </mes:FindAndGetCustomerAccountFault>
       </soapenv:Body>
    </soapenv:Envelope>
    Is there a way to get my content (<mes:FindAndGetCustomerAccountFault> ...</mes:FindAndGetCustomerAccountFault>) inside a soapenv:Fault element ?
    Choosing reply with success or with failure doesn't change any thing on my response.
    Thanks,
    Badreddine

    I think, in this case, you need to construct the xml with the soap fault structure and replace the $body variable. For example:
    <soapenv:Body>
    <soapenv:Fault>
    <faultcode>soapenv:Server</faultcode>
    <faultstring>Error</faultstring>
    <detail>
         <mes:FindAndGetCustomerAccountFault xmlns:mes="http://www.test.com/MEBS/Interfaces/ManageAccountReceivable/AccountReceivableManagement/v1/message">
         </mes:FindAndGetCustomerAccountFault>
    </detail>
    </soapenv:Fault>
    </soapenv:Body>

  • SOAP Fault Problem for WAS 6.20 System

    Hi,
    We are exposing some RFC enabled ABAP function modules as web services in a WAS 6.20 system.
    We are trying to have all consumers of our web services use the SOAP faults to handle errors.
    It works great when we raise exceptions from the function module.
    However, we are having an issue when an ABAP dump occurs.  It sets the SOAP fault properly,
    but the XML return has extra data at the end that is causing our .NET developers problems when
    trying to handle the SOAP fault.
    Here is the Original(raw) XML:
    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
    <faultcode> SOAP-ENV:Client </faultcode>
    <faultstring> Internal Server Error </faultstring>
    <detail>
    <rfc:Error xmlns:rfc="urn:sap-com:document:sap:soap:functions">
    <type> RABAX_STATE </type>
    <message> Divide by 0 (type 1). </message>
    </rfc:Error>
    </detail>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope> 
    sword" value="" size="8"/>
    </td>
    <tr>
    <td> Language:</td>
    <td>
    <selectname="sap-language" class="pulldown">
    <optionvalue="EN"> English</option>
    <option value="DE">Deutsch</option>
    </select>
    </table>
    <input type="submit"value="Anmeldung">
    </form>
    </body>
    </html>
    The HTML data at the end is causing the problems for our .NET guys.
    We have a 6.40 system in development for roll out sometime next year and we don't have this
    problem on that system.  However, since we are exposing web services on our 6.20 system, we'd
    like to get our standards in place now, so that our consumers won't have to change after
    the upgrade.
    Any information on how to turn off this extra data on a 6.20 system would be appreciated.
    Thanks,
    Jeff

    Hi Andreas,
    SOAP 1.2 is not supported, neither in WebAS 6.20 nor in 6.40 as far as I know support is not planed even for next magor release...
    The only what I can propose you is to create an OSS and check what shall SAP answer you,
    or to downport your applicaiton.
    Regards, Angel

  • How Handle ESB business Faults using Error Hospital

    Hai Everyone
    I am trying to configure Error Hospital for both BPEL & ESB faults. I`ve successfully configured it for BPEL and am trying to do that for ESB. I found that Fault Management can`t be done for ESB. Is that true ?
    If thats true, then I was thinking of a solution:
    1) Throw Fault from ESB to BPEL Service Invoker
    2) BPEL Invoke activity fails
    3) BPEL fault policy will be used.
    Now I am struck in throwing fault using XSL transformation from ESB service wsdl to BPEL, but my BPEL invoke activity doesnt understand the fault from wsdl and just thinks that as the output and succeeds.
    Is there anyway to get around this ?
    cheers
    Srini

    Nagakiran-
    As long as the fault is thrown by external service, you could handle the same ways as system fault.
    Below URL could show some example:
    http://www.it-eye.nl/weblog/2009/02/14/oracle-bpel-fault-policy-framework-handling-custom-business-faults/
    -Sridhar

  • How to propogate SOAP fault from JPD to JWS

    Hello,
    I am new to weblogic and i am facing a problem with propogation of SOAP Fault from JPD to Process Control to JWS.
    I need to throw a custom SOAP Fault from JPD to the client of the JWS which wraps this JPD.
    Currently when i set and throw the soap fault from JPD it goes to the Process Control but the Process Control in turn throws a ProcessControlException to the JWS. Does any one know how can i retrieve the original SOAP Fault in the JWS?
    Thanks

    Hello man.....
    You cannot get the the original SoapFault by usually try/catch operation, but there is a trick to do that....
    When you use your service control do that:
    try{
    yourServiceControl.yourMethodThatThrowsException();
    }catch(ServiceControlException e){
    //With this "e" variable you can retrieve the exception
    //looking for the the methods in it
    //e.getXXXX
    //you will find what you need
    I hope it helps you
    Sincerely
    messenger:[email protected]
    e-mail:[email protected]

  • Handling BPEL custom business faults in 11g

    Hi All,
    I am trying to work with 11g BPEL custom business faults based on fault-policies and following options are tried, but no success
    1. Use Throw activity to throw business fault and handle it in fault-policies
    2. Receive SOAP:Fault from OSB partnerlink and handle it in fault-policies
    Flow Description_
    BPEL<sync=>OSB
    Fault-Policy used*
    <faultName xmlns:ns="http://schemas.org/2207/Services"
    name="ns:BusinessFault">
    <condition>
    <action ref="ora-retry"/>
    </condition>
    </faultName>
    OSB WSDL*
    &lt;wsdl:message name="Business_ResponseFaultMessage"&gt;
    &lt;wsdl:part name="BusinessFault" element="tns:BusinessFault"&gt;&lt;/wsdl:part&gt;
    &lt;/wsdl:message&gt;
    &lt;wsdl:portType name="IntegrationService"&gt;
    &lt;wsdl:operation name="Order"&gt;
    &lt;wsdl:input message="tns:IntegrationService_InputMessage"/&gt;
    &lt;wsdl:output message="tns:IntegrationService_OutputMessage"/&gt;
    &lt;wsdl:fault name="BusinessFault" message="tns:Business_ResponseFaultMessage"&gt;&lt;/wsdl:fault&gt;
    &lt;/wsdl:operation&gt;
    &lt;/wsdl:portType&gt;
    &lt;wsdl:binding name="IntegrationSoap" type="tns:IntegrationService"&gt;
    &lt;soap:binding transport="http://schemas.xmlsoap.org/soap/http"/&gt;
    &lt;wsdl:operation name="Order"&gt;
    &lt;soap:operation soapAction="Order" style="document"/&gt;
    &lt;wsdl:input&gt;
    &lt;soap:body use="literal"/&gt;
    &lt;/wsdl:input&gt;
    &lt;wsdl:output&gt;
    &lt;soap:body use="literal"/&gt;
    &lt;/wsdl:output&gt;
    &lt;wsdl:fault name ="BusinessFault" &gt;
    &lt;soap:fault name="BusinessFault" use="literal" /&gt;
    &lt;/wsdl:fault&gt;
    &lt;/wsdl:operation&gt;
    &lt;/wsdl:binding&gt;
    I have defined BusinessFault in xsd and xsd is referenced with in OSB WSDL.
    *1st case result*
    When I use Throw activity,business fault is being raised but always going to CatchAll in BPEL, but I would like to handle through fault-policies.
    _2nd case result_
    OSB partnerlink is returning SOAP:Fault to BPEL, but BPEL is always taking it as remoteFault, not as a business fault.
    When I ran OSB service,I can clearly see SOAP:Fault being thrown,but When I invoke from EM console it is always complaining like
    *     Either the WSDL URL is invalid or the WSDL file is not valid or incorrect. - Failed to model operation: {"http://schemas.org/2207/Services}Order(,)*
    *Reason: Could not find definition for element: {"http://schemas.org/2207/Services}BusinessFault Detail:*
    SOAP:Fault returned by OSB is
    &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;soapenv:Header/&gt;
    &lt;soapenv:Body&gt;
    &lt;soap-env:Fault xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;faultcode&gt;soap-env:Server&lt;/faultcode&gt;
    &lt;faultstring&gt;Unable to find order offer for supplied product: ZINDA&lt;/faultstring&gt;
    &lt;detail&gt;
    &lt;ns:BusinessFault xmlns:ns="http://schemas.org/2207/Services"&gt;
    &lt;OrderResponse xmlns="http://schemas.org/2207/Services" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
    &lt;Errors&gt;
    &lt;ErrorMsgl Code="Unknown"&gt;Unable to find offer for supplied product: ZINDA&lt;/ErrorDetail&gt;
    &lt;/Errors&gt;
    &lt;Status&gt;Failed&lt;/Status&gt;
    &lt;/OrderResponse&gt;
    &lt;/ns:BusinessFault&gt;
    &lt;/detail&gt;
    &lt;/soap-env:Fault&gt;
    &lt;/soapenv:Body&gt;
    &lt;/soapenv:Envelope&gt;
    Any ideas where we are going wrong?
    Thanks,
    Praveen
    Edited by: Praveen Vaddanam on Apr 3, 2012 5:23 AM
    Edited by: Praveen Vaddanam on Apr 3, 2012 5:32 AM

    Hi
    Did you find a solution to your problem. I am also facing a similar problem.
    Thanks

  • Handling SOAP Fault Message in BPM

    Hello XI SDN'ers,
    I am getting SOAP Fault Message in my SOAP Scenario and I am not aware of Handling that error in my BPM. Could any one tell me, How to handle such error's in BPM?
    Thanks & Regards,
    Satish.

    hi satesh
    using "exception handler" in BPM we can handle the error messages
    regards
    kummari

  • Soap Fault Handler

    Hi
    I have written a prrof of concept page in Application Express Builder to call a web service.
    It all works OK as far as it goes; the page process gets the data and the report section displays the data. The success and error messages defined in the page process are displayed too.
    However, I found in the documentation that the error message section on the process definition is for unhandled errors (Soap faults). I need to get at the 'detail' in the soap fault.
    Where do I define the handler and are there any tips on how to code it?
    Thanks

    Hello Nick,
    Contact BEA Support and ask for CR182310_81sp2.jar
    This should solve your problem.
    For information the fix is included in version SP4
    Regards
    Nohmenn

  • Handling SOAP faults

    hello,
    I created a java control which calls an external webservice. How do you handle
    SOAP fault messages coming back from the webservice?
    Weblogic just throws an java.lang.reflect.UndeclaredThrowableException since it
    cannot parse the expected XML message.
    For example, when I call Logon() via the java control. The WebService should
    reply with a LogonResult object(in xml format). However, if there's an error,
    the WebService returns a SOAP Fault message. Since this fault message is not
    in the format of the expected LogonResult xml schema, weblogic throws an error
    (since it cannot create the LogonResult object) and the caller just receives the
    UndeclaredThrowableException without knowing any of the contents within the SOAP
    Fault.
    I'd like to be able to send back the SOAP fault content back to the calling function.
    I've tried throwing an exception from the java control handler, but it gets swallowed
    up by the SOAP Handler so I still get an exception with no content.
    any info is appreciated.
    thanks,
    Tom

    Hi,
    Do you get answer for that?
    I had similar problem and solved this in this way:
    In this java.lang.reflect.UndeclaredThrowableException handler is possible to get also SoapFault back:
    catch (java.lang.reflect.UndeclaredThrowableException e){
    RemoteException re = (RemoteException).getUndeclaredThrowable();
    ServiceControlException sfe = (ServiceControlException)re.getCause();
    SoapFault fault = sfe.getSoapFault();
    XmlObject[] objs = fault.getDetailContents();
    // more procssing here to get Soap detailed error
    Maybe this helps.
    rgrds,
    H

  • Handling Soap Faults in orchestration

    I have BizTalk exposing a WCF-BasicHttp endpoint, and an orchestration that picks it up, calls another WCF service and send the result back to the client. Any exceptions from the back-end service is handled using "Propagate Fault Message"
    setting on the Send Port
    As you can see from the picture above, I've set the Exception Object Type
    to the Fault_1 operation of Port_1. In the Expression shape, I trace the fault message and everything looks fine.
    However the exception is totally messed up on the client:
    Any ideas?
    Thank you
    If this answers your question, please use the "Answer" button to say so... Mikael - http://blogical.se/blogs/mikael

    instead of getting "<? xml" you're getting "\0<\0?\0...". I'd check the encoding across the messages.
    Also to be doubly sure, in your catch statement can you do a dump into EventLog to check if you're getting the SOAP Fault properly and your assignment is the culprit or you're getting the SOAP Fault itself in a different encoding format?
    Regards.

  • Handling Soap Fault Response.

    Hi All,
    I have a Proxy to SOAP scenario. 
    While testing from SoapUI --
    I am getting response for the valid input and for the invalid input the response is below.
    In the scenario through SAP PI , the valid input given from the HTTP client is getting a valid response and the scenario is running fine.
    But while checking the negative test, giving the invalid input, it is ending in a System error in PI.
    We have to handle this and send the error back to the source system.
    FAULT RESPONSE IN SoapUI :
    <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>soap:Client</faultcode>
             <faultstring>System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (6, 45). ---> System.InvalidOperationException: Instance validation error: 'AD' is not a valid value for Currency.
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read1_Currency(String s)
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read2_ConversionRate()
       at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Deserialize(XmlSerializationReader reader)
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       --- End of inner exception stack trace ---
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
       --- End of inner exception stack trace ---
       at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
       at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</faultstring>
             <detail/>
          </soap:Fault>
       </soap:Body>
    </soap:Envelope>
    *System error message in SAP PI* :
    <?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: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---&gt; System.InvalidOperationException: There is an error in XML document (1, 328). ---&gt; System.InvalidOperationException: Instance validation error: 'US' is not a valid value for Currency.
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read1_Currency(String s)
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read2_ConversionRate()
       at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Deserialize(XmlSerializationReader reader)
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       --- End of inner exception stack trace ---
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
       --- End of inner exception stack trace ---
       at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
       at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</SAP:AdditionalText><SAP:Stack/><SAP:Retry>M</SAP:Retry></SAP:Error>
    I want to capture the text in Fault string in the Fault response and send it back to the Source system.
    I have referred many blogs but i am unable to do it.
    Will java mapping work as this is a response from the Target Webservice and NOT an errorin PI.

    Hello.
    If your scenario is ECC -> Proxy -> PI -> SOAP -> WS -> SOAP -> PI -> Proxy -> ECC.
    In ESR create a Fault Message Type, and added to your Service Interface (Outboun/Inbound), use a XSLT mapping to take anyway format response, rebuid your proxy ABAP and see your "message fault" on exception tab.
    this works for me.
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
         <xsl:template match="/">
              <ns0:FMT_ResponseAuth>                              
                        <standard>
                             <faultText>
                                  <xsl:value-of select="//detail"/>
                             </faultText>                         
                        </standard>
              </ns0:FMT_ResponseAuth>
         </xsl:template>
    I hope this help you.
    Edited by: KrlosRios on Nov 2, 2011 5:59 PM

  • Handling SOAP faults in Flex 2

    i want to capture a soap fault from my .NET web service in my
    flex 2 client app. i found this code sample but it seems to be for
    flex 3 (it fails to compile when i try to use it - but maybe i am
    just not using it correctly?)
    if (event.fault is SOAPFault) {
    var fault:SOAPFault=event.fault as SOAPFault;
    var faultElement:XML=fault.element;
    }

    Yeah, this is a problem between the Flash Player and the
    browser. The player doesn't get the full exception code if the
    server returns a 200.
    The only solutions ar to trap all errors on the server, or
    force the server to not return a 200.
    Google this for more detail.
    Tracy

  • 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

  • Handling SOAP fault

    Hi,
    we call a web service from Netweaver 7.0 ABAP system through PI.
    So the scenario is Netweaver 7.0 ABAP -> PI -> Web service (HTTP SOAP)
    When the web service gives a SOAP Fault, it returns an error message which we want to be able to get in the ABAP calling system. However , when a SOAP Fault happens the mapping fails and the only exception we get back in the abap system is
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="MAPPING">CANNOT_READ_PAYLOAD</SAP:Code>
    How can we actually get the real fault message back to the abap system ... ?
    Thanks.

    Are you using the wsdl generated by XI or you have imported the service provider WSDL?
    If its from XI there is nothing more to do just do the inteface mapping with all the mapping (request , response and fault)
    In case you are using the service provide wsdl.... you have to import it into the external definitions of XI.
    Needs to create the interface and select the proper message for the interfaces and do the mapping and use it in interface mapping.
    Hope its clear

Maybe you are looking for

  • I just bought a WRT54G and it has already "bricked" :/

    I just got this thing a week ago and last night it suddenly stopped working. I rebooted it, everything was fine. About 30 minutes later it freezes again. I reboot it again. This time it lasts about 5 minutes, and after another reboot it comes back wi

  • "Get Info": Duplicate entries (artists, albums, genres)

    As the title states, these have been occurring in my iPhone 4. Mass selected songs from the same album/artist and editied them in both Windows Explorer and iTunes. No effects. Mark songs in an album as "part of a compilation". No success either. What

  • Help please hard drives

    Can I take the hard drive from a c655 s5503 and put it in a a505 s6033? The hard drive on my laptop is crashed and my sons laptop keeps coming apart so my son

  • Problem of downloading a specific image

    Hi , I am using AFNetworking to download the image of url by calling the method setImageWithURLRequest:requestWithURL:success:failure. There is an error just only with the image with above url. The details of the error message is the below: http://im

  • Need to unmount air drive upon shutting down computer?

    stupid question time. I just put a new extreme in as my base station and have a printer and a 500g Lacie HD connected to the extreme through a hub. Also connected to two different express units to extend the network and stream iTunes to two different