SOAP-RPC-MESSAGE-question

Hi all, i already posted this in "performance" group also. I have 3
question.
1. What will be the stability or what will happen if thousands of Client
request hits the Soap-Servlet(that parses the client's soap xml message) at
one point of time in both RPC(Remote Procedure call) and Message-style
weblogic web-service structure? Is it going to create thousands of
Soap-servlets(One soap-servlet per call)? If one soap-servlet handles
everything, then what will be its scalability and performance?
2. How will be the response or what will be the response send back to the
client in Message-style webservices when the soap-servlet finds an error in
the XML message comming from a client? Because Message-style is one-way. If
we need response, then we have to create a seperate webservice call using
seperate client, soap-servlet, jms queue. So, how come the response client
waiting for the message get the response if any error happens on the
soap_servlet of the client request?
3. Should always the StatelessSessionBean be the entry point in RPC style?
Why not an entitybean directly? Why statelessSessionbean only?
4. Is there more details about this in the documentation other than this
"http://e-docs.bea.com/wls/docs61/index.html" site?
Thanks in Advance
Elangovan

Yes I think your app will perform better using remote objects, there's 
a great app to test that named Census you can get it and do your own 
tests or play with it on James Ward's blog.
Sincerely,
Michael
El 22/04/2009, a las 12:24, ijmarrero <[email protected]> escribió:
>
We are developing a middle sized application using Flex and Axis 
Webservices. On the client side we AS code generated using Flex 
Builder 3.0 and the WSDL. On the server side we have Java  code 
generated with Axis 1.3 using the same WSDL. The problems occurs 
when the server sends a 290Kb response to the Client. Flex spends 10 
seconds (obtained from mx.rpc.* log facility) in deserialing this 
SOAP message. My question is:
>
¿Could I improve the performance of the deserialization?
>
Due to the fact that this is an unaceptable delay and that we have a 
code of 70.000 lines ¿what choices we have? ¿Should we use remote ob
jects?
>
Thank you
>

Similar Messages

  • Intercepting SOAP XML message in JAX-RPC Handler and calling a diff method

    Is it possible to intercept the SOAP XML message in the JAX-RPC handler and avoid the serialization and deserialization (OR avoid XML data binding)
    Here is a more detail question
    My web service has two methods
    1. One Method which accepts Java Object (this object is mapped with a Schema
    Complex Type Element in my WSDL file)
    2. Second method which accept simple String type.
    I want my web service client to send java object (using the first method), so that the Input gets validate in the WSDL itself (before it hits the actual web service) but once the request gets validated i want to pass that converted SOAP XML String (on the Server side using JAX-RPC handler) to the Second method.

    The answer to this is that the WSDL had
    elementFormDefault="qualified"
    in the schema.
    Changing to unqualified resulted in the desired output.
    Note: The service was changed to handle both cases.

  • How to create a standard SOAP request message from a given WSDL file?

    Hello,
    If I have a WSDL file (either from a .net web service or from the famous Amazon web services), what is the best way to generate a SOAP compliant request message?
    I am having trouble understanding the role of WSDL file in a given web service.
    Question 1:
    If I have a web service that is implemented using jaxm, how do I create/publish a WSDL file that describes the web service?
    Assuming I can generate a wsdl file, can I recreate the SOAP request message from the WSDL file automatically (that matches the original request, which is hand build by me?)
    Question 2:
    If I have a web service that is implemented using JAX-RPC, based on the WSDL file, can I simply generate a valid SOAP message (by some JAVA api) and get the response message directly?
    thanks...

    I have the same question ("Assuming I can generate a wsdl file, can I recreate the SOAP request message from the WSDL file automatically (that matches the original request, which is hand build by me?)")
    Have you already found an answer to this?

  • How to pass soap request message to server?

    how i can pass soap request message to server using http request header? the soap
    message contains remote procedure call which invokes the method at serverside?
    and where i have to write that header request?
    so i dont know how to pass the request soap message document
    [addsoaprequest.xml]

    Hello,
    We have a diagnostic tool called Post [1] that will post the request
    directly to a SOAP server. You can also try the graphical tool WeX [2]
    so you can see what is happening at the wire level.
    I may have misunderstood your question and goal. The purpose of the
    JAX-RPC [3] API is to provide a high-level abstraction of SOAP
    communications such as you describe.
    What is your use case?
    Thanks,
    Bruce
    [1]
    http://edocs.bea.com/wls/docs81/webserv/trouble.html#1066132
    [2]
    http://webservice.bea.com/wex.zip
    [3]
    http://java.sun.com/xml/jaxrpc/index.html
    Nisha Kothari wrote:
    >
    how i can pass soap request message to server using http request header? the soap
    message contains remote procedure call which invokes the method at serverside?
    and where i have to write that header request?
    so i dont know how to pass the request soap message document
    Name: addsoaprequest.xml
    addsoaprequest.xml Type: ACT Project (text/xml)
    Encoding: base64

  • PI 7.1 Adapter Module Development - Identify SOAP Fault Message

    Hi Experts,</br>
    here's a PI 7.1 Adapter Module Development issue I hope you can help me to resolve. It's about identifying SOAP fault messages.</br>
    </br>
    Scenario at a glance:</br>
    Adapter Modules placed in the modules chain at request and response time in a synchronous Scenario:</br>
    - Request: SOAP Axis to RFC </br>
    - Response and Fault Response: RFC to SOAP Axis</br>
    </br>
    The issue is how to identify SOAP fault message in SOAP Axis Adapter Module in the response message:</br>
    The client gets SOAP fault messages like the follwong one:</br>
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <ns1:exception xmlns:ns1="http://typen.geschaeftsstelle.pab.barmer.de">
                   <ns1:errortext>bla bla bla ...</ns1:errortext>
                </ns1:exception>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </br>
    </br>
    But when trying to access the tags faultcode and/or faultstring in the adapter module via xPath expressions I do not get them. Obviously the SOAP Fault tags are built AFTER the adapter module has been passed. So my question is:</br>
    How can I clearly/uniquely detect a SOAP fault response message (and distinguish it from a "normal" response message) in my SOAP Axis Adapter Module?</br>
    </br>
    I tried it the following way:</br>
    </br>
    </br>
    // Check Message Payload for SOAP Fault Message via xPath expressions</br>
    ...</br>
    // SOAP Fault Code</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultcode");</br>
    zv_soapFaultCode = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // SOAP Fault String</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultstring");</br>
    zv_soapFaultString = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // check for SOAP Fault Message</br>
    if (zv_soapFaultCode.equals("") && zv_soapFaultString.equals("")) {</br>
         // Create Audit Log entry - NOT a SOAP Fault Message</br>
         zv_msgText = zc_constModuleName + " 0190: xPath - OK! This message is NOT a SOAP Fault Message";</br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.SUCCESS, zv_msgText);</br>
         zv_faultCheck = false;</br>
    }</br>
    else {</br>
         ...</br>
         // Create Audit Log entry - SOAP Fault Message</br>
         zv_msgText = zc_constModuleName </br>
              + " 0200: xPath - this message is a SOAP Fault Message. " </br>
              + " - Faultcode is: " + zv_soapFaultCode </br>
              + " - Faultstring is: " + zv_soapFaultString; </br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);</br>
         ...</br>
    }</br>
    ...</br>
    </br></br>
    But zv_soapFaultCode and zv_soapFaultString are always empty (with other payload tags this coding works fine).</br>
    </br>
    Any ideas? </br></br>
    Thanx very much in advance!</br></br>
    Regards,</br>
    Volker

    Hi Alex!
    Like already mentioned I solved my problem by identifying the SOAP exception with the messageClass attribute of the PI message header. Acess code:
    try {
    String zv_msgClass = zv_piMsg.getMessageClass().toString();
    } catch (Exception e) {
    zv_msgText = zc_constModuleName
    + " E0110: Message processing terminated."
    + " Reason: Error while getting MessageClass "
    + zv_dataSource
    + e;
    // create trace and audit log entry (severity ERROR) for exception
    zv_location.errorT(ZV_SIGNATURE, zv_msgText);
    zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);
    ModuleException me = new ModuleException(e);
    zv_location.throwing(ZV_SIGNATURE, me);
    e.printStackTrace();
    throw me;
    }     // end of try-catch-block
    But I do not think this will solve your problem. I am almost sure, that something in your Axis configuration is wrong/missing. If a handler cannot be instatiated then it really may be missing. Have a look at defaultTrace.trc. Maybe you will find more suitable information about the root cause of your problem. Also have a look at NWA under software components and/or application modules if you can find/see your modules.
    But there is a general issue when trying to catch PI fault messages. If e.g. the requestor tries to login with wrong userid/pasword, then you will have no chance to catch this kind of error - at least as far as I know. Because in this very early stage of PI message processing no module is called.
    One last question: Did you develop your own Adapter or just an adapter module? In the first case: Is your adapter started and healthy? Have a look at RWB -> communication channel monitoring.
    Regards,
    Volker

  • SOAP: response message contains an error

    Hi,
    I send a message by PI to a service and I get the following message:
    SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: No such operation SETCOMPANYFIELDVALUERequest
    The scenario that I use is a RFC --> PI --> SOAP. The WSDL looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="urn:DefaultNamespace" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:DefaultNamespace" xmlns:intf="urn:DefaultNamespace" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:message name="SETCOMPANYFIELDVALUERequest">
      <wsdl:part name="COMPANYNAME1" type="xsd:string"/>
      <wsdl:part name="COMPANYNAME2" type="xsd:string"/>
    </wsdl:message>
    <wsdl:message name="SETCOMPANYFIELDVALUEResponse">
      <wsdl:part name="SETCOMPANYFIELDVALUEReturn" type="xsd:anyType"/>
    </wsdl:message>
    <wsdl:portType name="AppLSDataSync">
      <wsdl:operation name="SETCOMPANYFIELDVALUE" parameterOrder="COMPANYNAME1 COMPANYNAME2">
       <wsdl:input message="intf:SETCOMPANYFIELDVALUERequest" name="SETCOMPANYFIELDVALUERequest"/>
       <wsdl:output message="intf:SETCOMPANYFIELDVALUEResponse" name="SETCOMPANYFIELDVALUEResponse"/>
      </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="DominoSoapBinding" type="intf:AppLSDataSync">
      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="SETCOMPANYFIELDVALUE">
       <wsdlsoap:operation soapAction="SETCOMPANYFIELDVALUE"/>
       <wsdl:input name="SETCOMPANYFIELDVALUERequest">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:DefaultNamespace" use="encoded"/>
       </wsdl:input>
       <wsdl:output name="SETCOMPANYFIELDVALUEResponse">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:DefaultNamespace" use="encoded"/>
       </wsdl:output>
      </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="AppLSDataSyncService">
      <wsdl:port binding="intf:DominoSoapBinding" name="Domino">
       <wsdlsoap:address location="http://localhost"/>
      </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    When I send the same message using the WebServiceNavigator everything is working fine.
    The WSDL that I have imported into PI is the same that is available that I use calling by the WSNavigator.
    Anyone an Idea?
    Thanks Ron

    HI
    WSDL is having some problem
    When you imported this wsdl how many messages does it show. Check weather it is having SETCOMPANYFIELDVALUE request and response. you can check the messages carried in a wsdl using the messages tab in external definition.
    Thanks

  • HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7

    All -
    I'm new to consuming web services in JDeveloper. I'm using Oracle JDEV 10.1.3.3/OC4J.  I'm using this version since it is compatible with Oracle EBS 12.1.3.  My intent is to pull data from our third party recruitment app (Success Factors) and load that data into Oracle HRIS.  I'm already doing this through a .NET application.  I'm converting it to be a Java Concurrent Program in EBS.  The code listed below is a stub call to verify I'm on the right track. I created a JDeveloper Web Services proxy project.  I'm testing it locally on my windows desktop.  When I'm able to consume the service successfully, then I'll think about moving it to the EBS server.
    I'm getting the following error when I invoke the following service:
    HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    End point is: https://api4.successfactors.com/sfapi/v1/soap?wsdl
    Any help/assistance would be much appreciated. 
    Below is my code and output of my test:
    package emsc.oracle.apps.emscper.sfapi.proxy;
    import HTTPClient.HTTPConnection;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSession;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSessionResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Login;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResult;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Logout;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LogoutResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFCredential;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFParameter;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Error;
    import java.io.File;
    import javax.xml.rpc.ServiceFactory;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Date;
    import javax.xml.ws.BindingProvider;
    import javax.xml.soap.SOAPException;
    import java.util.Map;
    import oracle.security.ssl.OracleSSLCredential;
    public class SFAPITest {
        // Declare members:      
        private String companyId;
        private String userName;
        private String password;
        private String developerKey;
        private Date   effDt;
        private String greaterThanEffDt;
        private String lessThanEffDt;
        // Declare constants:      
        final static private String breakLine = "+---------------------------------------------------------------------------+";
        final static private String format    = "yyyy-mm-dd";      
        private enum ReqId {
            PrimaryReq(25),
            PrimaryReqCEO(26),
            EmCarePrimary(27),
            RTI(28),
            EmCareClinical(29);
            private int reqId; 
            private ReqId() {
            private ReqId(int value) {
                reqId = value;
            public int getReqId() {
                return reqId;
        // Getters and Setters:  
        protected String getCompanyId() {
           return this.companyId;
        protected void setCompanyId(String value) {
           this.companyId = value;                 
        protected String getUserName() {
           return this.userName;
        protected void setUserName(String value) {
           this.userName = value;                 
        protected String getPassword() {
           return this.password;
        protected void setPassword(String value) {
           this.password = value;                 
        protected String getDeveloperKey() {
           return this.developerKey;
        protected void setDeveloperKey(String value) {
           this.developerKey = value;                 
        protected Date getEffDt() {
            return this.effDt;
        protected void setEffDt(Date value) {
            this.effDt = value;                 
        protected String getGreaterThanEffDt() {
           return this.greaterThanEffDt;
        protected void setGreaterThanEffDt(String value) {
           this.greaterThanEffDt = value;                 
        protected String getLessThanEffDt() {
           return this.lessThanEffDt;
        protected void setLessThanEffDt(String value) {
           this.lessThanEffDt = value;                 
        public void runProgram()
            SFAPIService mySFAPIService;
            String CompletionText = "";
            String effDtStr2 = null;
        /* Code your program logic here.
        * Use getJDBCConnection method to get the connection object for any
        * JDBC operations.
        * Use CpContext provided commit,rollback methods to commit/rollback
        * data base transactions.
        * Don't forget to release the connection before returning from this
        * method.
        /* Call setCompletion method to set the request completion status and
        * completion text.
        * Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
        * ReqCompletion.ERROR.
        * Use Completion text message of length 240 characters. If it is more
        * than 240 then full string will appear in log file and truncated 240
        * characters will be used as request completion text.
        try
            ServiceFactory factory = ServiceFactory.newInstance();
            mySFAPIService = (emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService)factory.loadService(emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService.class);      
            SFAPI api = mySFAPIService.getSFAPI();
           /// SFAPI api = new SFAPI();
            //Map<String, Object> requestContext = ((BindingProvider) api).getRequestContext();
            //requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
            System.out.println("ServiceName => " + mySFAPIService.getServiceName().toString());
            System.out.println("End Point   => " + mySFAPIService.getServiceName().toString());
            System.out.println(breakLine);
            // Authentication: Login to SFAPI:
            SFCredential credential = new SFCredential();
            // Fake credentials being passed in for this post:   
            credential.setCompanyId("XXX");
            credential.setUsername("XXX");
            credential.setPassword("XXX");
            credential.setDeveloperKey("XXX");
            HTTPConnection httpsConnection = null;       
            OracleSSLCredential _credential = new OracleSSLCredential();      
            _credential.setWallet("\\\\\\C:\\Program Files\\Java\\jdk1.6.0_33\\jre\\lib\\security", "ParkEstes3");
            /*System.setProperty("javax.net.ssl.trustStore","C:\\\\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\keystore");
            System.setProperty("javax.net.ssl.trustStorePassword","changeit");  
            System.out.println(System.getProperty("javax.net.ssl.trustStore"));*/
            // SFParameter: Define a generic SFParameter List.  This is a necessary parameter
            // to invoking calls in SFAPI:      
             /*System.setProperty("javax.net.ssl.keyStore",
             "file:\\\C:\\jdk1.4.1\\jre\\lib\\security\\client.keystore");
             System.setProperty("javax.net.ssl.keyStorePassword","welcome");         */
            /*  System.setProperty("oracle.net.wallet_location",
                          "(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=\\\C:\Users\dparrish\Oracle\WALLETS)))");  // (2)                     */
            File kstore = new File("C:\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\jssecacerts");
            boolean exists = kstore.exists();
            if (!exists) {
                System.out.println("Keystore does not exist");
            else {
                System.out.println("Keystore does exist");
            System.setProperty("javax.net.ssl.trustStore", kstore.getAbsolutePath());
            System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            //System.setProperty("proxySet", "false");
            //System.setProperty("http.proxyHost", "127.0.0.1");
            //System.setProperty("http.proxyPort", "8080");
            System.out.println(kstore.getAbsolutePath());
            List<SFParameter> lst = new ArrayList<SFParameter>();
            SFParameter param = new SFParameter();
            param.setName("");
            param.setValue("");
            lst.add(param);      
            SFParameter[] sfParam = lst.toArray(new SFParameter[lst.size()]);
            Login login = new Login();
            try {
                login.setCredential(credential);
                System.out.println("1");
                login.setParam(sfParam);
                System.out.println("2");
                LoginResponse loginResponse = new  LoginResponse();
                LoginResult loginResult = new LoginResult();
                try {
                     loginResponse = api.login(login);               
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("3");
                try {               
                     loginResult = loginResponse.getResult();
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("4");
                IsValidSession vs = new IsValidSession();                  
                IsValidSessionResponse isValidSessionResponse = api.isValidSession(vs);
                System.out.println("5");
                if (isValidSessionResponse.isResult()) {
                     System.out.println("Session is valid");
                     System.out.println("Result => " + loginResult.getSessionId());
                     System.out.println(breakLine);              
                    Logout logout = new Logout();
                    LogoutResponse logoutResponse = api.logout(logout);
                    if (logoutResponse.isResult()) {
                         System.out.println("Logout of SFAPI Successful");
                    else {
                        System.out.println("Logout of SFAPI Unsuccessful");
                else {
                     System.out.println("Session is invalid");
                    List<Error> errors = new ArrayList<Error>();
                    for (int i = 0; i < loginResult.getError().length;  i++) {
                        errors.add(loginResult.getError()[i]);
                    for (int i = 0; i < errors.size(); i++) {
                         System.out.println("Error Indice   => " + i);
                         System.out.println("Error Code:    => " + errors.get(i).getErrorCode());
                         System.out.println("Error Message: => " + errors.get(i).getErrorMessage());
                         System.out.println(breakLine);                                                          
                    } // end for loop of SFObject errors
                } // end InvalidSession
            catch (Exception e)
                 System.out.println("Session Credential Exception");
                 System.out.println("Exception => " + e.getMessage());
                 System.out.println(breakLine);                   
        catch (Exception e)
            System.out.println("Parameter List Exception");
            System.out.println("Exception => " + e.getMessage());
            System.out.println(breakLine);
        }   // end runProgram
        // Constructor:
        public SFAPITest()  {
        } // end constructor
        public static void main (String args[]) {
            try
                SFAPITest test = new SFAPITest();        
                test.runProgram();
            catch (Exception e) {
                System.out.println("main exception => " + e.getMessage());
    } // SFAPITest
    Here is the output with trace:
    WARNING: Unable to connect to URL: https://api4.successfactors.com:443/sfapi/v1/soap due to java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    Session Credential Exception
    Exception => ; nested exception is:
        HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    +---------------------------------------------------------------------------+
    Process exited with exit code 0.

    The other end is throwing back a programming error.
    That might be because you are sending incorrect data and the other end fails to validate it.
    You might be able to guess based on your C# code.  But, since you are using soap one generic solution is available to you.
    - Get an http proxy interceptor like wireshark.
    - Run it while your C# app runs, collect the http requests from that.
    - Run it while running your java code, collect the http requests from that.
    Compare the two.

  • 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

  • SOAP Synchronous messages

    Hi experts,
    I am testing SOAP synchronous messages. this is sender is SOAP receiver is ABAP proxy.
    while testing if the message is successfully processed, i am not able to see the message details in SXMB_MONI.
    but if any errors are processed i am able to see the error message.
    Here my question is for synchronous interface can we see the sucessfull messages in SXMB_MONI.
    thanks
    Srinvas

    HI Srinvas,
    -->Recheck your entire scenarios once again if the process flow involves the Integration Engine definately the messages should be visible in the SXMB_MONI.
    -->So you are inserting the Record into db table using the ABAP server proxy.......
    -->I think there may not be any problems in the configuration of INtegration Engine, SXMB_ADM  since you can view the error messages.
    Thanks

  • Failing silently when trying to construct org.apache.soap.rpc.SOAPContext

    OK This is really weird. I have an app that runs fine in eclipse. I have deployed to using webstart but when I try to instantiate org.apache.soap.rpc.SOAPContext default constructor it fails.
    All my jars are signed and I have given all permissions in the jnlp
    here is the jnlp
    <?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="1.0+" codebase="http://cs12895.adm.bju.edu/dc" href="dc.jnlp">  
         <information>     
              <title>DC App</title>     
              <vendor>Bob Jones University</vendor>     
              <homepage href="http://www.bju.edu"/>     
              <description kine="one-line">The Discipline Committee Application</description>     
              <description kind="short">The Discipline Committee Application</description>            
               <icon href="imageIcon.gif"/>     
               <shortcut online="false">     
               <desktop/>     
               </shortcut>    
               <offline-allowed/>  
          </information>  
          <security>     
              <all-permissions/>  
          </security> 
         <resources>     
              <j2se version="1.5+" max-heap-size="256m"/>
              <jar href="dc.jar"/>          
              <jar href="looks-2.0.2.jar"/>     
              <jar href="log4j-1.2.12.jar"/>         
              <jar href="jdnc20060529003752.jar"/>        
              <jar href="hibernate3.jar"/>        
              <jar href="forms-1.0.7.jar"/>                   
              <jar href="soap.jar"/>
              <jar href="swingx20060529003241.jar"/>
         </resources>  
         <application-desc main-class="edu.bju.dc.rich.LoginFrame"/>
    </jnlp>Here is the code. In this cod ethe first debug messageI see but i do not see the second message. Which is how I now it is not getting constructed.
         log.debug("Setting up call to auth ws");
        Call call = new Call();
        log.debug("Finished setting Call up");
        String soapActionURI = "urn:AuthService";

    OK I got it working. It was not throwing an exception but when I put I try catch looking for throwables I discovered it was looking for mail.jar. So all better now :-)

  • OTN Live Web Services problem, mismatched WSDLs and Soap RPC reply

    I've tried to connect to all those OTN Live Web Services using webMethods and found there might be a mismatched WSDLs and Soap RPC problem in Oracle side. There is a discussion thread of this: http://www.wmusers.com/wmusers/messages/116/904.shtml
    Is there anyone out there encounters the same problem and agree that Oracle should fix this ? Thanks a lot in advance.

    Hi Mike,
    I've just downloads all 5 WSDL and tried each single one of them again. The following are the results of the test.
    Result (OK): this is the success case
    Result (0): this is the "OTN Authentication Failure" and I cannot tell if it works if input is correct.
    Result (1): this is the error I've mentioned in the previous message and I'll give you more details later.
    Result (2): this is the "No Serializer found" exception:
    java.lang.IllegalArgumentException: No Serializer found to serialize a
    'org.w3c.dom.Element' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.
    -- IOTNMobileWrapperPortType
    getStatusByMsgID (OTN Authentication Failure)
    getStatusesByMsgIDs (1)
    getSupportedTransports (1)
    getVersion (1)
    sendText (1)
    sendTextMsg (1)
    -- OTNDeptEmpPortType
    getDeptInfoArray (OK)
    getDeptInfoXML (2)
    getDeptNoArray (OK)
    getDeptXML (2)
    getEmpInfoArray (OK)
    getEmpInfoXML (2)
    getEmpNoArray (OK)
    getEmpXML (2)
    -- IOTNGUIDGeneratorPortType
    getGUID (1)
    -- IOTNHelloWorldPortType
    getAvailableLanguages (1)
    getDefaultHelloWorld (1)
    getHelloWorld (1)
    -- IOTNNewsPortType
    getRss (1)
    Let me explain what happens in error case (1):
    webMethods construct the "targetOutSignature" for the client base on the WSDL.
    After the reply message retrieved, it tries to "conform" (validate) it against the "targetOutSignature".
    Whenever I get this exception, I can open the exception details and actually see that the reply xml has been received but with the error message of "Output parameters do not conform to targetOutputSignature".
    If I manually remove the "targetOutputSignature" from the generated client, so that webMethods won't try to "conform" the reply message against the one described in the original WSDL, it works perfectly.
    I hope this helps. Please let me know if there is any other information I can provide.
    Thanks.
    - Louis

  • How can I get a SOAP Error message in ABAP ?

    Dear all.
    I'm trying to get SOAP Error message during XI Interface.
    I've got an Error ( T-code : sxi_monitor ) and I need to get the Error message and write to screen.
    I used
    CATCH CX_AI_APPLICATION_FAULT.
    CATCH CX_AI_SYSTEM_FAULT.
    but couldn't get the error message.
    The Error occured as below.
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ZTSD0030' (structure 'stmt1'): java.sql.SQLException: FATAL ERROR: Column 'ORDER' does not exist in table 'ZTSD0030'</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    I exactly need 'BOLD' style message.
    Any help is appreciated.
    Thanks!

    Hi,
      This is an application fault,
      error log clearly saying that''ORDER' does not exist in table 'ZTSD0030'.
      these are specific to interfaces, in order to handle those
    u need to configure apllication log at 'SLG1' t.code.
    i mean, u have to use following function moules to handle application log in ABAP Proxy .
    i.e
    APPL_LOG_WRITE_HEADER
    APPL_LOG_WRITE_MESSAGES
    APPL_LOG_WRITE_DB.
    warm regards
    mahesh.

  • BPM:  System_Error" SOAP fault message received

    Hi,
    We upgraded SAP system from 4.7 to ERP2004 on 09/17/05.
    We have XI-3.0 version from last 9 months and this BPM was working good so far. We have not changed anything in it except we upgraded the SAP system.
    We are using ABAP proxy from SAP to send "userid"
    message to XI-BPM and then it would make a Synchonous call to SAP system to get roles of those "usrid".
    In the first step when it is sending data to XI an exception is raised and in the second step when it tries to make synchronous call to SAP we are getting error:
    <Trace level="3" type="T">Deserializing message object...</Trace>
      <Trace level="3" type="System_Error">SOAP fault message received</Trac
      <Trace level="3" type="System_Error">SOAP fault code: Client</Trace>
      <Trace level="3" type="System_Error">SOAP fault string: Error during c
    I noticed that the XML name tag looks different now
    Before upgrade when message was successful.
    <?xml version="1.0" encoding="utf-8" ?>
    - <ns1:MT_ECA_USRID xmlns:ns1="http://bcm.edu/common"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <USRID>CLARKSON</USRID>
      <USRID>2_MA140016</USRID>
       </ns1:MT_ECA_USRID>
    After upgrade when message is failed
    <?xml version="1.0" encoding="utf-8" ?>
    - <nr1:MT_ECA_USRID xmlns:nr1="http://bcm.edu/common">
      <USRID>AABULIMI</USRID>
      <USRID>AB147899</USRID>
      <USRID>ACHALL</USRID>
       </nr1:MT_ECA_USRID>
    You would notice that
    " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    missing after upgrade.
    I would appreciate if anyone could help me.
    Mrudula

    Hi,
    Can you paste the full error message. Also take a look at the default trace log in Visual Admin. Set the logging for soap to debug.
    Naveen

  • How to XI error message will mapped to the SOAP faul message-SOAP(Axis)

    Hi,
      Receiver end I am using SOAP (Axis) adapter and I am getting the system error and I am not getting the payload in SXMB_MONI.
    What ever the error message how do MAP as a SOAP Fault message in SXMB_MONI.
    I found the Solution from OSS note 1039369 but did not explain where to set what parameter and what modules...
    SOAP Fault code
    If parameter Category is XIAdaptger, Area SOAP, Code FAULT
    In this case, parameters P1 and P2 may be set to the fault namespace and fault name. If these parameters are set, the SOAP fault code is set to namespace P1 and name P2. Otherwise, it is set as in other cases.
    For all other cases
    In this case, the SOAP fault code is set to namespace "http://sap.com/xi/XI/Message/30" and name category.area.code, where category, area, code represent the XI error category, area, and code values, respectively.
    SOAP detail
    If parameter ApplicationFault is set
    The SOAP detail child is set to the XI application payload. If, however, the payload extraction mode is set to Envelope, the application payload is taken as the SOAP envelope and the SOAP detail content is set to its body content. Similarly, if the extraction mode is set to Body, the application payload is taken as the SOAP body and the SOAP detail content is set to its content.
    Otherwise
    No SOAP detail content is set in this case.
    Examples
      XI error element
    <sap:Error ...>
      <sap:Category>XIAdapterFramework</sap:Category>
      <sap:Code area="MESSAGE">GENERAL</sap:Code>
      <sap:AdditionalText>Failed to determine a receiver agreement for the given message.</sap:AdditionalText>
    </sap:Error>
    SOAP fault element
    <soapenv:Fault>
      <faultcode xmlns:ns1="http://sap.com/xi/XI/Message/30">ns1:XIAdapterFramework.MESSAGE.GENERAL</faultcode>
      <faultstring>Failed to determine a receiver agreement for the given message.</faultstring>
      <detail/>
    </soapenv:Fault>
    Help appriciated
    Regards,
    Venu.
    Edited by: Venugopalarao Immadisetty on Sep 24, 2009 3:39 PM

    Using Receiver SOAP Axis adapter and I am getting the below exception
    XI error element
    <sap:Error ...>
    <sap:Category>XIAdapterFramework</sap:Category>
    <sap:Code area="MESSAGE">GENERAL</sap:Code>
    <sap:AdditionalText>Failed to determine a receiver agreement for the given message.</sap:AdditionalText>
    </sap:Error>
    and above exception how do I convert as a SOAP Fault message..
    SOAP fault element
    <soapenv:Fault>
    <faultcode xmlns:ns1="http://sap.com/xi/XI/Message/30">ns1:XIAdapterFramework.MESSAGE.GENERAL</faultcode>
    <faultstring>Failed to determine a receiver agreement for the given message.</faultstring>
    <detail/>
    </soapenv:Fault>
    Any idea what modules need to add in Receiver SOAP Axis adapter.

  • Error:SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Server was unable to read request. --- There is an error in XML document (1, 447). --- Input string was not in a correct format.

    Hi All,
        We have a scenario of FTP-->PI---> Webservice.  While triggering the data in the FTP, it is failing in the PI with the below error
    SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Server was unable to read request. ---> There is an error in XML document (1, 447). ---> Input string was not in a correct format.
    Can you please help?

    Hi Raja- It seems to be a data quality issue.
    Check for the value @ 1447 position in the xml message that you are trying to send to web service..
    may be a date filed/decimal value which is not in expected format.

Maybe you are looking for

  • 2012 rMBP Desktop Issue w/ Mavericks

    Hi all, I'm on a 15" retina macbook pro from 2012, and use multiple desktops for different applications. Ever since I upgraded to Mavericks, dekstops 2 and 3 have been randomly switching places, which is getting very annoying. While it's not an enorm

  • How to change sound output?

    Howdy I recently bought a high-end toslink cable which I connected from the optical/digital out from my iMac to my receiver. The sound quality is excellent, however I noticed that all sounds now gets passed to my Hifi system all the time. The only wa

  • How to get the label on selectOneMenu selected item??

    Hi, I'm not able to get the label of the selected item in a selectOneMenu. The code I use to fill it is: <h:form id="formNacion" name="formNacion"> <h:selectOneMenu value="#{modelRtbBean.nacion}" id="selectNacion" onchange="this.form.submit();"> <f:s

  • Sending to external address: 550 5.1.1 RESOLVER.ADR.ExRecipNotFound; not found

    Hi. We are using now two systems of Exchange. 2010 SP3 on-premises as part of SBS 2011 and Exchange Online. Two yaers 2010 works good. But 2-3 month ago one user began to receive error when he send email from 2010 to Exchange Online: 550 5.1.1 RESOLV

  • Hide a parameter in a select-screen

    hi I have this selection screen SELECTION-SCREEN BEGIN OF BLOCK tipo WITH FRAME. PARAMETERS: p_resumo RADIOBUTTON GROUP tipo, p_farm   RADIOBUTTON GROUP tipo. *RP(20.02.2009)-Reestruturação do módulo SELECT-OPTIONS: s_kunnr FOR qmel-kunum. PARAMETERS