How to disable stack traces in SOAP faults of webservices?

Hi everybody
My problem are the stack traces that WLS automatically puts into SOAP faults if an exception in the webservice code occurs. For security reasons I would like to stop WLS from doing so. But how can I configure this aspect in WLS? In Glassfish there is a system property to enable or disable such a behaviour: com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace. Axis2 knows a similar property, too. What about WLS?
Thanks in advance for any help!
Marc

Thanks for your input. Using a message handler I could filter the created SOAP faults and remove any stack traces, but I'm rather looking for a configuration option or system property that manages the initial creation of SOAP faults, i.e. that lets you turn off stack traces in SOAP faults. I expect such a property to exist in WLS because I know of such properties in Glassfish/Metro and Axis2. Does anybody know of such an option or property in WLS?

Similar Messages

  • Can anyone help how to print stack trace messages using log4j?

    Can anyone help how to print stack trace messages using log4j?

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p %m%n"/>
    </layout>
    </appender>
    <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/usr/local/dice/d2jbin/cmdToNetJobs/app-debug.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1000KB"/>
    <param name="MaxBackupIndex" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="DEBUG" />
    <param name="LevelMax" value="DEBUG" />
    </filter>
    </appender>
    <appender name="INFO" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/usr/local/dice/d2jbin/cmdToNetJobs/app-info.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1000KB"/>
    <param name="MaxBackupIndex" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="INFO" />
    <param name="LevelMax" value="INFO" />
    </filter>
    </appender>
    <appender name="WARN" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/usr/local/dice/d2jbin/cmdToNetJobs/app-warn.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1000KB"/>
    <param name="MaxBackupIndex" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="WARN" />
    <param name="LevelMax" value="WARN" />
    </filter>
    </appender>
    <appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="/usr/local/dice/d2jbin/cmdToNetJobs/app-error.log"/>
    <param name="Append" value="true"/>
    <param name="MaxFileSize" value="1000KB"/>
    <param name="MaxBackupIndex" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p %m%n"/>
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="ERROR" />
    <param name="LevelMax" value="ERROR" />
    </filter>
    </appender>
    <root>
    <priority value="debug"/>
    <!--<appender-ref ref="STDOUT"/>
    --><appender-ref ref="DEBUG"/>
    <appender-ref ref="INFO"/>
    <appender-ref ref="WARN"/>
    <appender-ref ref="ERROR"/>
    </root>
    </log4j:configuration>
    I ve written like this
    and to print stack trace I used
    log.error(Throwable(e))
    but does nt display printstacktrace how to do it

  • How reliable is stack trace?

    Hi there,
    I am debugging a core on solaris 10. the shared libraries are compiled and linked without -g0 and majority of the symbols are removed using a linker map. Now when I loaded dbx and do a "where", the stack trace only shows
    [1] 0xfcb01510(0x0, 0xfebe09d8, 0xfe30b500, 0x433a70, 0x23c428, 0x1), at 0xfcb01510
    [2] 0xfcb014a8(0x3937450, 0x0, 0x0, 0x18e7, 0xfccbc4a8, 0x185004a4), at 0xfcb014a8
    [3] 0xfdd7b1a4(0x433a70, 0x3ec720, 0xfe30b500, 0x433a70, 0xfe31f1e8, 0xfdd7adc4), at 0xfdd7b1a4
    [4] 0xfdd66890(0x433a70, 0x3ec720, 0x8, 0xff1436f8, 0xfc06edb4, 0x23c428), at 0xfdd66890
    [5] 0xfc1375fc(0x3ec708, 0x3, 0x3ec720, 0xfc3fddd8, 0x837568, 0x2c0468), at 0xfc1375fc
    [6] 0xfc12f3c0(0x3ec708, 0x3ec860, 0x3ec860, 0x5df89a8, 0x0, 0xa770408), at 0xfc12f3c0
    [7] 0xfc1d9cfc(0x3ec714, 0x3ec860, 0x8c, 0xb8, 0xfc40002c, 0xfc174638), at 0xfc1d9cfc
    [8] 0xfc1d8680(0x0, 0x17, 0x3ec860, 0x2c0558, 0x5, 0x3ec714), at 0xfc1d8680
    [9] 0xfc1d8998(0x3ec8a8, 0x17, 0x3ec860, 0x2c0558, 0x3, 0x5), at 0xfc1d8998
    [10] 0xfc1339c4(0x3ec708, 0x17, 0x3ec860, 0xff141b0c, 0x5, 0x2c0020), at 0xfc1339c4
    [11] 0xfc1341bc(0x3ec708, 0x17, 0x3ec860, 0xa770408, 0xffffff, 0xfc3fd610), at 0xfc1341bc
    [12] 0xfc133878(0x3ec708, 0x12, 0x3ec860, 0xfc3f5c60, 0x0, 0xfea56158), at 0xfc133878
    [13] 0xfc134b08(0xfa87bd9c, 0xfffad938, 0x0, 0x3ec708, 0xfc40017c, 0xfc3f5c60), at 0xfc134b08
    [14] 0xfea7b168(0x23c428, 0x2692c0, 0x23c4c8, 0x3ec998, 0xfeb9bc61, 0xfea56158), at 0xfea7b168
    [15] 0xfea80c30(0x2692c0, 0x2692c0, 0xfefecbc0, 0xfd6e2800, 0x4eaa0, 0x0), at 0xfea80c30
    [16] os_thread::runThreadFunction(0x21d550, 0xfa87c000, 0x0, 0x0, 0xff141b0c, 0x1), at 0xff11309c
    I am not surprised because .so does not have too many symbols to begin with. I used the manual technique to map each frame to a shared library:
    1. take address of the function in each frame,
    2. compare against base address of a shared library from output of "proc -map" (it shows where each so is loaded into the process).
    3. see 1. falls into the range of which library displayed in 2.
    4. substract base address from 1. (used for later)
    After that, I went ahead to locate function, what I did was pull the exact source code and compile them without applying the linker map (still without -g0). I hope this newly compiled so is the same as the production ones in terms of function offsets:
    1. nm the_faulty_so_recompiled.so
    2. sorted functions in nm output by its offset,
    3. compare 4. in previous step against these offsets.
    but I find the result is sometimes not reliable because there is no way some of the function is called by previous frame, it is just impossible if you look at the source code.
    Can someone tell me if I am doing something terribly wrong here?
    BTW, parameters for each functions show in the "where" stack frames are not the same as I expected, occasionally there is something like 0x1 or 0x17, what are those?
    Thanks.

    but the core is not reproducible, -g0 version is not particularly helpful in that case. What I am hoping is the following:
    1. the release version is compiled without -g0 and with a linker map to eliminate 99% of symbols.
    2. recompiled version is with exact same source code and without -g0 and without linker map.
    same compiler and everything else. I would expect the function offset is the same in those 2 cases. correct? If not, what have I done wrong?
    I am ok with just knowing which function is at fault so without -g0 is ok for me. But why I am seeing stack trace still does not make sense? What is wrong with my calculation of function offset?
    Is there some kind of remapping the loaded address of library going on here so I have to manually calculate some offset to get the real function offset?
    Thanks.

  • How to get stack trace of an exception

    Hi,
    I want to get whole stack trace and show it in a new Frame instead of showing on command line.
    when I say,
    e.getMessage();
    it gives just first line, not rest of the part.
    Can anybody help me with that?
    Thanks in advance.

    StringWriter sw = new StringWriter();
    PrintWriter pw = new PrintWriter(sw);
    e.printStackTrace(pw);
    String stackTrace = sw.toString();

  • 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]

  • SOAP Fault

    Gurus,
    Can someone post and example on how and when to generate a SOAP fault ?
    I can potentially handle errors by plugging in error messages in the response message.
    When would once generate a soapfault instead of a response message ?
    has anyone on this groups implemented a web service or a soap based service operation or transaction?

    Ok, figured it out.
    The web service was not proviing a namespaced fault element.
    Fixed that and Apex now identifies the SoapFault

  • C++ Stack Trace API

    Does anyone know of a **C++** API for Solaris (9 or 10) that would produce a stack trace?
    I'm writing an exception handling framework and there is a lot of information that is lost at the time that an exception is thrown, specifically, the stack info. Capturing and encapsulating this information into an Exception base case would aid developers in debugging.
    Redhat has backtrace() and backtrace_symbols(), but I haven't been able to find anything similar on Solaris. I don't really want to implement an ELF parser and do this myself! :)
    And feedback would be appreciated! Thanks.

    Hmmm, some how, searching for "stack trace" using the Search function of this web page returns THOUSANDS of results. Yet I googled "solaris printstack" and found similar posts. Funny how google can perform better than Sun's own web page search.
    Regardless, I thought I would give a link to the solution (in a previous thread):
    http://forum.sun.com/thread.jspa?threadID=9501&messageID=26747

  • Throw a new soap fault

    Hello to Everyone,
    I'm a OSB 10.3.1 newbie, and i want to throw a new soap fault.
    The problem is that the error code & error message comes in the body of the response message (not in a soap fault). From this response i capture the errors (code & message) and assign them to context variables.
    How can i throw a new soap fault with the values of the context variables?.
    Thanks

    Hi,
    The body of the response is in fact where you would create the soap fault (for SOAP services of course). The only trick is that the child element of the body variable must be a <soap-evn:Fault> element.
    What I've done in some projects is define an XQuery transformation to create the soap fault. The soap fault has a detail element where you can add your custom exceptions (those defined in your WSDL). As input arguments to the XQuery transformation you can send the error code and message that come in the fault variable plus any other arguments you might want to add.
    For example (I'm omitting the namespace declarations, variable declarations that the transformation should have):
    declare function xf:createSOAPFault($errorCode as xs:string, $errorMessage as xs:string, $operationId as xs:string)
        as element(env:Fault) {
    <env:Fault>
        <faultcode>env:Server</faultcode>
        <faultstring>{ $errorMessage }</faultstring>
        <detail>
            <ns0:MyException>
                <ns0:operationId>{ $operationId }</ns0:operationId>
                <ns0:errorCode>{ $errorCode }</ns0:errorCode>
                <ns0:errorMessage>{ $errorMessage }</ns0:errorMessage>
            </ns0:MyException>
        </detail>
    </env:Fault>
    };If your client is using JAX-WS for example, you could do something like this:
    try {
       // invoke ws
    } catch (MyException e) {
        log("Operation ID: " + e.getOperationId() + ", Error Code: " + e.getErrorCode() + ", Message: " + e.getErrorMessage());
    }

  • Core dump: dbx stack trace

    Can anyone point to a good doco on how to interpret stack trace from Solaris core file?
    For example,
    strcasecmp(0xfedf7cd8, 0x47534b53, 0x4b3ee0, 0x619c50, 0xff327234, 0xff33c000), at 0xff2cf390
    what do those 6 addresses in brackets represent?
    Thanks

    Please take a look at http://forum.sun.com/thread.jspa?forumID=10&threadID=9801
    or search this forum for 'pstack output format'
    Regards,
    Sergey.

  • How to get Java source in applet stack trace to debug Java security manager

    How can I get line numbers for Java source in stack traces for my applet? I'm having a problem with my code-signing certificate. On one of my applets, I consistently get a NullPointerException inside the security dialog code in the JDK. As a result, either the "trust this applet" dialog never appears, or even though it appears, it defaults to untrusted because of the exception, so I can't access any local files (and that's a bit of a problem for an applet whose sole purpose is to upload files to our server). I unzipped src.zip in my JDK directory and set the debug flag for my Ant <javac> task as well as set debuglevel to "lines." Anything else? Here's the trace that I'm getting so far. See that after the NullPointerException it assumes that the user has denied permission. If I could read this Java source maybe I could figure out why it hates my code-signing certificate (jarsigner, BTW, never complains when I verify my jar).
    security: Blacklist file not found or revocation check is disabled
    security: Accessing keys and certificate in Mozilla user profile: null
    security: Loading Root CA certificates from D:\Program Files (x86)\Java\jre6\lib\security\cacerts
    security: Loaded Root CA certificates from D:\Program Files (x86)\Java\jre6\lib\security\cacerts
    security: Loading Deployment certificates from C:\Users\Rich\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
    security: Loaded Deployment certificates from C:\Users\Rich\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
    security: Loading certificates from Deployment session certificate store
    security: Loaded certificates from Deployment session certificate store
    security: Validate the certificate chain using CertPath API
    security: Obtain certificate collection in Root CA certificate store
    security: Obtain certificate collection in Root CA certificate store
    security: Start to check whether root CA is replaced
    security: The root CA has been replaced
    security: No timestamping info available
    security: Found jurisdiction list file
    security: Start checking trusted extension for this certificate
    security: Start comparing to jurisdiction list with this certificate
    security: The CRL support is disabled
    security: The OCSP support is disabled
    security: This OCSP End Entity validation is disabled
    security: Checking if certificate is in Deployment denied certificate store
    security: Checking if certificate is in Deployment permanent certificate store
    security: Checking if certificate is in Deployment session certificate store
    java.lang.NullPointerException
         at com.sun.deploy.ui.UIFactory.showSecurityDialog(Unknown Source)
         at com.sun.deploy.security.TrustDeciderDialog.showDialog(Unknown Source)
         at com.sun.deploy.security.X509Util.showSecurityDialog(Unknown Source)
         at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.isTrustedByTrustDecider(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.getTrustedCodeSources(Unknown Source)
         at com.sun.deploy.security.CPCallbackHandler$ParentCallback.strategy(Unknown Source)
         at com.sun.deploy.security.CPCallbackHandler$ParentCallback.openClassPathElement(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$700(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
         at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
         at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
         at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
         at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    security: User has denied the priviledges to the code
    security: Adding certificate in Deployment denied certificate store
    security: Added certificate in Deployment denied certificate store
    security: Loading certificates from Deployment session certificate store
    security: Loaded certificates from Deployment session certificate store
    security: Validate the certificate chain using CertPath API
    security: Obtain certificate collection in Root CA certificate store
    security: Obtain certificate collection in Root CA certificate store
    security: Start to check whether root CA is replaced
    security: The root CA has been replaced
    security: No timestamping info available
    security: Found jurisdiction list file
    security: Start checking trusted extension for this certificate
    security: Start comparing to jurisdiction list with this certificate
    security: The CRL support is disabled
    security: The OCSP support is disabled
    security: This OCSP End Entity validation is disabled
    security: Checking if certificate is in Deployment denied certificate store
    security: Checking if certificate is in Deployment denied certificate store

    Rats, now that I look at the stack trace and compare to what's in the JDK srce.zip, it appears that most of this code is not part of the JDK source. I don't see any com/sun/deploy, etc.

  • SEVERE: SAAJ0009:  How do I stop stack trace being printed to standard out

    Anyone know why the following stack trace is printed when connection.call(message, endpoint); throws an exception? It happens when the server or web service is offline
    using jdb I can see that the next statement to execute is the return("FAIL .... but the stack trace is already printed by then. How do I tell it not to print the stack trace. I've tried adding a catch for java.io.IOException but the compiler says it's not thrown. Any ideas
    SOAPMessage response = null;
    try{
    response = connection.call(message, endpoint); <= blows up here "myClient.auth myClient.java:333)
    connection.close();
    catch (SOAPException ex){
    return("FAIL Error sending authentication soap message " + ex.getMessage());
    java.io.IOException
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:593)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:272)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:29)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(HttpSOAPCon
    ection.java:151)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:12)
    at myClient.auth(myClient.java:333)
    at myClient.send(myClient.java:93)
    at myClient.main(myClient.java:550)
    Caused by: java.net.ProtocolException: Server redirected too many times (20)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:800)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:272)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:27)
    ... 6 more
    May 18, 2004 12:23:05 PM com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection post
    SEVERE: SAAJ0009: Message send failed
    java.security.PrivilegedActionException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Message send
    failed
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:12)
    at myClient.authenticate(myClient.java:333)
    at myClient.send(myClient.java:93)
    at myClient.main(myClient.java:550)
    Caused by: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Message send failed
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:30)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(HttpSOAPConection.java:151)
    ... 5 more
    Caused by: java.io.IOException
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:593)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:272)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:29)
    ... 6 more
    Caused by: java.net.ProtocolException: Server redirected too many times (20)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:800)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:272)
    at com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:27)
    ... 6 more

    For anyone who's interested, apparently I'm not the only one with this problem, others have asked the developrs to remove printStackTrace() from the SAAJ code. For now we have to redirect standard error or ignore

  • How to catch a SOAP fault

    Hi All,
    I have a ISU to web service, PROXY to SOAP sync interface. I am getting following as response.
    How can I get this into Fault message mapping?
    I have followed these blogs:
    Fault Message Types - A Demo (Part 1)
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
      <?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: Validation constraint violation: data type mismatch in element 'extraOverhead'</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Thanks,
    Aravind

    Hi,
    Can you please elaborate exactly what you are trying to achieve.....are you trying to display this error message to the user of client proxy...If so, You can catch the exceptions in client proxy using the two standard exception classes.
    CATCH cx_ai_system_fault .
    CATCH cx_ai_application_fault .
    and in the catch block you can receive the error message and display it. The code will look like this
      DATA :  sys_fault TYPE REF TO cx_ai_system_fault,
                 text      TYPE string.
      CREATE OBJECT sys_fault.
      CALL METHOD sys_fault->get_text
        RECEIVING
          result = text.
      WRITE  : /10 'System Fault ', 30 text.
    Regards,
    Priyanka

  • How to send back the soap fault message without details tag to the sender

    Hello Expert,
    Is it possible to send the soap fault message(fault String element value) without details tag as shown below to the sender in synchrounous scenario.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
              <soapenv:Fault>
                   <faultcode>soapenv:Client</faultcode>
                   <faultstring>autorizarComprobanteRequest.comprobanteCAERequest.arrayOtrosTributos.otroTributo(1).codigo - El Código de Tributo es obligatorio.</faultstring>
                   <detail></detail>
              </soapenv:Fault>
         </soapenv:Body>
    </soapenv:Envelope>
    I have to send the faultstring element value in one of the element in response message back to sender? Is it possible using BPM?The above fault response does not have a fault payload (no detail element) and would result in a system error message.So how to handle this?
    If yes .Please tell me the BPM design
    faultstring value will be dynamic.
    Thanks in advance

    Thanks Yzanagi,
    I have gone through the index.htm file.
    In my scenario that is RFC -PI-soap(using http(Axis) protocol).when the webservice provider  is sending the soap fault as.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soapenv:Body>
              <soapenv:Fault>
                   <faultcode>soapenv:Client</faultcode>
                   <faultstring>autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1</faultstring>
                   <detail></detail>
              </soapenv:Fault>
         </soapenv:Body>
    </soapenv:Envelope>
    In PI sxmb_moni it is converting to the error (system not application error)as shown below when using receiver soap adapter with  https(Axis) transport protocol and Message protocol:Axis.
    <?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:P1>
      <SAP:P2></SAP:P2>
      <SAP:P3></SAP:P3>
      <SAP:P4></SAP:P4>
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: autorizarComprobanteRequest.comprobanteCAERequest.numeroComprobante - El Número de Comprobante debe ser mayor o igual a 1.</SAP:AdditionalText>
      <SAP:Stack></SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    As my requirement was (I have mentioned in my first question) that I want to pass
    SAP:AdditionalText tag
    value back to sender  in  one of the elements of  response message payload or handle using fault message mapping if this error could be converted to application error and map to the RFC exception  but unfortunately which is  not possible even using AXIS  adapter.
    so other  option to inform the sender RFC is mentioned here http://help.sap.com/saphelp_nw70/helpdata/en/22/0425e0488911d189490000e829fbbd/content.htm
    but while handling the SYSTEM_FAILURE  exception from PI at sender in report program and  displaying the msg variable ,I am not getting complete error message..It is getting truncated.Is there a limit to the no of character the msg variable contains which is set by system.Even if we declare msg variable with more length(for example char length 500) it is just displaying part of the error message from PI.
    Any Idea to read complete system error message from PI in report program at RFC sender..
    Kind Regards,
    Kubra fatima

  • How to capture SOAP fault when using "Do not use SOAP envelope" parameter

    Hi,
    we have a synchronous  RFC -> XI -> Web Service scenario. The Web Service requires some custom SOAP header elements for user authorization which forced us create the entire SOAP message in a message mapping and to set the "Do not use SOAP envelope" parameter in the receiving SOAP adapter.
    In order to capture the SOAP fault message from the Web Service we have created a message interface with a fault message and also created an interface mapping with a fault message mapping.
    Our problem is that the fault message is not populated when we get a SOAP fault message back from the Web Service. Is this due to the fact that we have set the  "Do not use SOAP envelope" parameter?
    Thanks in advance!
    Stefan
    Message was edited by:
            Stefan Nilsson

    Hi Bhavesh,
    I have exaactly same scenario. But the only difference is that the Successful payload is also not coming into PI.
    The request is successfully hittng the webservice.
    Please guide me on how to capture the paylod.
    I am using the WSDL provided by the thirdparty but sill the message is not coming into PI.

  • SOAP fault - How to log error in response message map

    Hi,
    I have a scenario ABAP Proxy <-> XI <-> SOAP.
    Occassionally there is an issue with communication to the destination system and an HTTP 500 Error is returned. I assume this is due to a system related error and it is returned as a SOAP Fault as opposed to a SOAP response with payload.
    How do I get this "HTTP-500" error into my message map to return to the calling system ?
    I have looked at Fault Messages but need to know if these are relevant for the SOAP Adapter and how they can be utilised ?
    Thanks for any help.
    Kind regards
    Colin.

    SOAP fault message not in correcto format to allow an application error to be caught.

Maybe you are looking for