MessageExpiredException in the Sync XI--JDBC scenario

Hello experts,
I am developing a scenario
run a report in ECC, the report will get data from other database via JDBC and then display in ECC client.
thus i develop a sync scenario,
but sometimes i sent the request, and then wait for 3 minutes, at last get the exception: com.sap.engine.interfaces.messaging.api.exception.MessageExpiredException
This can not be always reproduced, but it happens very frequently.
I searched in the forum it seems lots of people get the trouble but i didnt see a solution.
I dont think expand the timeout parameter is a good idea, because when it works, it only take 1 second to complete the whole interaction, but when it doesnt, it takes 3 minutes then timeout.
Could you give me some guide here? Thanks a lot in advance!
Best regards, Charlie

Hi Charlie,
At times, it happens in Synchronous calls to XI box. One way I suggest is to handle the situation with optimum time-outs and adjusting in the ABAP reports (if possible - at least try to recall the service).
[How to Investigate Timeouts In Synchronous XI/PI Scenarios|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c059d583-a551-2c10-e095-eb5d95e03747?quicklink=index&overridelayout=true] could help to find out the time-out settings.
Mean time, you can check why the time-outs are occurring. Does it happen because of Network latency, database time-out etc.
Let me know your thoughts on this approach. I am also looking forward for better handling of this situation.
Regards,
Nikhil Bose

Similar Messages

  • Complex Sync receiver JDBC scenario

    Hi everyone,
    Scenario - Web Service (async) -> PI -> JDBC (sync)
    Request structure (not typing the standard format, but I am following that)-
    <MT_req>
    <Statement1>                     SELECT # 1
    <access>
    <filenumber/>
    <segment1>
    <field2>
    </segment1>
    <segment2>
    <field2>
    </segment2>
    </Statement1>
    <Statement2>                     SELECT # 2
    <access>
    <filenumber/>
    <segment1>
    <field2>
    </segment1>
    <segment2>
    <field2>
    </segment2>
    </Statement2>
    </MT_req>
    Select # 1 will return FILENUMBER and SEGMENT1 (In this case, segment2 will be blank?). Select # 2 will return FILENUMBER and SEGMENT2 (In this case segment1 will be blank).
    There can be multiple occurrences of segment 1 & 2. Not always segment 1 & 2 will share same FILENUMBER.
    The target payload should look like -
    <MT_resp>
    <row>
    <FILENUMBER>                 (if seg1 & 2 share the same FILENUMBER)
    <segment1> fields with values </segment1>
    <segment2> fields with values </segment2>
    </row>
    <row>
    <FILENUMBER>                 (if seg1 & 2 don't share the same FILENUMBER)
    <segment1> fields with values </segment1>
    <segment2> fields with NO values </segment2>
    </row>
    </MT_resp>
    Briefly it means that if FILENUMBER is same, then "merge" the 2 segments in the same message row.
    Can this be handled in the message mapping? If yes, how? If no, then what can be done?
    I hope I am able to explain it properly. Any help will be highly appreciated.
    Thanks for your time and efforts.
    Abhi

    Scenario - Web Service (async) -> PI -> JDBC (sync)
    So does it mean that you do not want to send the response back to WS? In this case you have to implement a BPM to either discard the response from JDBC or to route the response to some other receiver.
    <row>
    <FILENUMBER> (if seg1 & 2 share the same FILENUMBER)
    <segment1> fields with values </segment1>
    <segment2> fields with values </segment2>
    </row>
    In the source will segment1 and segment2 are present as two different nodes (i.e. in the datatype itself)?
    If yes, then below logic should work for creating FileNumber in above case:
    Segment1 -->
              --> equalS --> if (Then --> Blank_Constant) --> row
    Segment2 -->
    to generate the other row node when segment1 and segment2 are not the same just put a Not function after equalS .... second row node needs to be duplicated (duplicate Subtree)
    Regards,
    Abhishek.

  • Getting ROUTING_BACK_ERROR in the IDOC to JDBC Scenario

    Hello,
    I am working on the scenario IDOC to JDBC .Here from IDOC i have successfully inserted the entries in the table usig JDBC adapter.But it is giving the error in the acknowledgement as below
    SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="OUTBINDING">ROUTING_BACK_ERROR</SAP:Code>
      <SAP:P1>,XD1_WEB</SAP:P1>
      <SAP:P2>,EDI,,</SAP:P2>
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Error in back routing Error in communication channel</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Regards,

    Hi Muthu,
            Sorry for the late reply, i missed the auto mail.
    Anyways is the problem solved?
    Actually the acknowledgement is asked by sender SAP system which pots idoc so it donot matter if your target is JDBC,
    You can see this weblog where the author sends an idoc to xi and xi posts a file and sends back an acknowledgement to SAP server.The technical reason which i think is that SAP system posts and sees the target as a Business system or business service or an intregation process so it donot matter if target is JDBC or file.
    The weblog is:
    /people/saravanakumar.kuppusamy2/blog/2005/01/20/configuration-tips-for-a-business-serviceintegration-process-to-send-back-ale-audit-idoc
    I mean get a try to this, if this donot work we can troubleshoot or think of alternative solution.
    Have a great day!!
    Anirban.

  • The Resource Pool has already been destroyed - File to JDBC Scenario

    Hi,
    Error : "Error when attempting to get processing resources: com.sap.aii.af.service.util.concurrent.ResourcePoolException: The resource pool has already been destroyed"
    Scenario : This error is occurring for the File to JDBC Scenario .
    Could you please let me know why am getting this error and solution to resolve this error..
    Thanks in Advance!!
    Regards,
    Sekhar

    Hi ,
    Thanks for the replies..
    Just to add to have more clarity on the error for the scenario
    Scenario : This error is occurring for the File to JDBC Scenario
    The Scenario has a BPM involved.The synchronous send step within the BPMsends the data to the JDBC receiver adapter.The response from the JDBC
    adapter is throwing the below error.
    Thanks,
    Sekhar

  • Two way Asynchronous business process for Webservice to JDBC scenario

    Hi Experts,
    For the webservice to JDBC scenario, I have to use two way Asynchronous business process. Is it possible?
    Scenario : Webservice to JDBC -> Async Call
    JDBC to Webservice -> Async Call
    I have already done with two way Synchronous. Here I would like to know about only Async call. Please provide your suggestions.
    Is it recommended to use Async call when we have Synchronous option?
    For the above requirement I have to create two separate services and in BPM, I have to call one by one..Is it correct?
    Regards
    Sara
    Edited by: Sara D on Dec 18, 2007 8:05 AM

    hi sara,
    yes it is possible.
    In receiver channel JDBC we have a special parameter "Exactly Once Handling " which is to assure async incoming data to be written only once to avoid redundancy.
    Although Synchronous is "Best Effort" but it is considered to be "Worst Case". We can use Sync but try to use Async as much as possible to ensure system performance.
    Ques : For the above requirement I have to create two separate services and in BPM, I have to call one by one..Is it correct?
    yup you have to create two services and you are following right path but this scenario should be in two steps seperately.
    Rergards,
    Mandeep Virk

  • Test cases for File to JDBC scenario?

    Hi Experts,
    I would like to know what are the things needs to be tested to ensure that the File to JDBC scenario holds good in the PI box. Your valuable inputs are required to verify /check my scenario configuration is free of errors.
    Thanks & Regards,
    Pcv.

    Hi,
    You can try the following:
    1) If the end systems require authentication and the same is not provided in PI then it should throw an error.
    2) Check what happens when you dont give a mandatory field.
    3) check what result you will get when you give a wrong input.
    4) Check whether all your restrictions (in mapping and/or in receiver determination) are working properly.
    5) Check what you need to do when the target system is down.
    6) If using any FCC then check whether the conversion is done properly.....
    7) See to it that you have defined a proper DB structure when you are communication with JDBC
    8) Check with the end system whether your statement (Insert/Update/Delete etc) is performed properly
    Regards,
    Abhishek.
    Edited by: abhishek salvi on Dec 4, 2008 9:58 AM

  • Error comming in File to JDBC scenario.

    Hi Frnds,
    I am trying to do the File to JDBC scenario and is using the SQLServer.
    After processing the message, it is showing executed successfully in moni but for the receciver communication channel  i am getting the error like---->
    Error during database connection to the database URL 'jdbc:sqlserver://10.112.132.211:1433;databaseName=DemoDB' using the JDBC driver 'com.microsoft.jdbc.sqlserver.SQLServerDriver': 'com.sap.aii.adapter.jdbc.sql.DriverManagerException: Cannot establish connection to URL 'jdbc:sqlserver://10.112.132.211:1433;databaseName=DemoDB': SAPClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver'
    What could be the possible solution for it.
    Thnx
    Raj.

    Hi Raj,
    As Prateek mentioned, the error you are getting is because of an improper installation of a driver.
    Check out the doc for the driver installtion steps : [How To Install and Configure External Drivers for the JDBC & JMS Adapters|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/f04ce027-934d-2a10-5a8f-fa0b1ed4d88f]
    Also, the following thread contains some more useful links : Re: What's necessary to connect SQL server to XI?
    Thanks,
    Pooja Pandey

  • Very strange error : IDOC to jdbc scenario

    Hi
    I am getting a very strange error when I see the log for the idoc to jdbc scenario that I am building.
    The mapping test shows the header record and line item record properly in the mapping result.
    insert, access nodes, fields with access nodes are all formed correctly.
    However the communication channel log shows below error.
    Could not execute statement for table/stored proc. "tblTestItem" (structure "Item") due to com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ')'.
    JDBC Message processing failed, due to Error processing request in sax parser: Error when executing statement for table/stored proc. 'tblTestItem' (structure 'Item'): com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ')'.
    The message status was set to WAIT.
    The query that I see in the log is :INSERT INTO  tblTestItem () VALUES ()
    However mapping tool shows that all nodes are correctly formed.
    Please assist.

    Hi
    I am still getting this issue even after the below steps so kind of stuck - actually very much stuck.
    1. Restart of the dev environment
    2. Tried with a new extension of the idoc
    In the communication channel log for the JDBC receiver channel I still see
    INSERT INTO tblItem () VALUES ()
    The payload that I see in the message content tab is as follows
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_XXX_XXXX xmlns:ns0="http://capita.com/pi/XXXX">
    - <Statement>
    - <dbTableName action="INSERT">
      <table>tblItem</table>
      </dbTableName>
    - <access>
      <InvoiceNo>0000000009293467</InvoiceNo>
      </access>
      </Statement>
      </ns0:MT_XXX_XXXX>
    How do I debug the jdbc adapter to see how it converts the above xml output from the mapping step (note that this output is from an actual run and not test tool) to a sql query.
    Very strange that the column names are present in the target payload but it is not reflecting in the query.
    I have other tables being populated with the same jdbc receiver communication channel which makes this more and more confusing.
    PLEASE ADVICE.

  • Problem with Webservice - XI - JDBC scenario

    Hi Experts,
    When I have tried to test the Webservice -> XI -> JDBC scenario with the mention address, I am getting the below error.
    <b>Address :</b> http://<Host>:50100/XISOAPAdapter/MessageServlet?channel=:WEB_SERVICE:SOAP_CC&version=3.0&Sender.Service=WEB_SERVICE&Interface=http%3A%2F%2Fatl.com%2Ftar%5EMI_Outbound
    <b>Error:</b>
    <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                             <context>XIAdapter</context>
                             <code>RecoverableException</code>
                             <text><![CDATA[
    com.sap.aii.af.ra.ms.api.RecoverableException: com.sap.aii.af.ra.ms.api.DeliveryException: Application:EXCEPTION_DURING_EXECUTE:
         at com.sap.aii.af.mp.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:919)
         at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl3.process(ModuleLocalLocalObjectImpl3.java:103)
         at com.sap.aii.af.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:258)
    JDBC Part works fine only problem with the SOAP sender side. Any suggestion please..
    Regards
    Sara
    Message was edited by:
            Sara D

    Hi,
    As per Bhavesh & Krishna's suggestion, I have changed the JDBC Data type. Now I could able to see the SXMB_MONI error too.
    Latest error:
    When I have tried to test the scenario using xmlApy, I am getting the below error.
    <b>RWB error:</b>
    2007-06-21 03:04:24 Success Receiver JDBC adapter: processing started; QoS required: BestEffort
    2007-06-21 03:04:24 Success JDBC adapter receiver channel DB_CC: processing started; party  , service DB_SERVICE
    2007-06-21 03:04:24 Error Unable to execute statement for table or stored procedure. 'Address' (Structure 'STATEMENT') due to java.sql.SQLException: FATAL ERROR document format: structure 'STATEMENT', no key element found
    <b>xmlSpy Error:</b>
                   <context>XIAdapter</context>
                             <code>RecoverableException</code>
                             <text><![CDATA[
    com.sap.aii.af.ra.ms.api.RecoverableException: com.sap.aii.af.ra.ms.api.DeliveryException: XIAdapterFramework:GENERAL:com.sap.aii.af.ra.ms.api.DeliveryException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'Address' (structure 'STATEMENT'): java.sql.SQLException: FATAL ERROR document format: structure 'STATEMENT', no key element found
         at com.sap.aii.af.mp.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:919)
         at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl3.process(ModuleLocalLocalObjectImpl3.java:103)
         at com.sap.aii.af.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:258)
    I have mapped the EmpId in the mapping as well as in the DB the EmpId is Primary Key. Could you please tell me,what I am missing here?
    Regards
    Sara
    Message was edited by:
            Sara D

  • SOAP TO JDBC scenario: calling stored procedure which will return the value

    Hi
    I have Soap To Jdbc scenario in which I am going to call the Stored Procedure at target side which will be executed and it is going to return the result set .
    Result contains following values.
    return code as ( 0 Or 1) and also specific exception message if its return code as 1.
    Could you suggest me the way by which I can handled this return code and send it back to the Sap PI system then the same thing is directed the to SMTP server for sending mail to consern person.
    Regards
    Kumar

    The OUT parameters of stored procedure will be returned as response. Where exactly are you facing the proble? Here is a complete walkthourgh
    /people/luis.melgar/blog/2008/05/13/synchronous-soap-to-jdbc--end-to-end-walkthrough
    In your case, you don't want response at sender. Instead you want to mail it. For this you may use BPM to design your scenario with following steps
    Receive (to receive data from sender)
    Send Sync (to stored procedure and get response)
    Send Async (to mail receiver)
    Regards,
    Prateek

  • Error"SYSTEM Failure" while testing the RFC in SE37  : RFC to JDBC Scenario

    Hi All,
    I am doing RFC to JDBC scenario. When I am testing the RFC in SE37 using the RFC destination created in SM59, I get an error "SYSTEM FAILURE".
    Please suggest.
    Thanks,
    Shyam
    Edited by: Shyam Sreepada on Dec 18, 2007 5:46 PM

    Hi,
    You must run RFC with RFC destination in background mode, I suggest to read following post in order to understand it better.
    Syntax would be:
    CALL FUNCTION func IN BACKGROUND TASK
                       [DESTINATION <your RFC destination>]
                       parameter list
    http://help.sap.com/saphelp_nw04/helpdata/en/8f/53b67ad30be445b0ccc968d69bc6ff/frameset.htm
    If you read it you will find that you can't test it directly from SE37, for this either you need to create dummy ABAP program or another RFC where you will call this RFC with background syntax.
    Regards,
    Gourav
    Reward points if it helps you
    Edited by: Gourav Khare on Dec 18, 2007 6:07 PM

  • JDBC Scenario: Delete all the existing records and Insert

    Dear All,
    Scenario: IDoc to JDBC
    PI need to delete all the existing records in the SQL table then need to insert the records.I have created a two statements in the target structure.
    Statement1
       -> TableName
           -> action : DELETE
           -> Table : TableName
    Statement2
       -> TableName
           -> action : INSERT
           -> Table : TableName
           ->Access
               -> Elements
    I am getting below error while try to delete the records in the table.
    JDBC message processing failed; reason Error processing request in sax parser: Error when executing statement for  table/stored proc. 'Tablename' (structure 'Statement1'): java.sql.SQLException: FATAL ERROR document format: structure 'Statement1', no key element found
    Note: we use above structure in the another interface without specifying any Key for Delete operation(Server is same but different database for this two interface) and it works fine. Although the Primary keys has been set in the SQL table i am getting the above error.
    let me know what are the setting need to make in PI and SQL DB to achieve this.
    Regards,
    Manikandan Shanmugam
    Edited by: Manikandan Shanmugam on Nov 8, 2011 6:19 AM

    The straucture what you have deined for Delete is not correct, you should have key field in statement structure then only you can perform Delete operation.
    refer below link
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/44/7b6e85fde93673e10000000a114a6b/content.htm
    Regards,
    Raj

  • How to send the data to SQL server group in Reciever JDBC scenario

    Hi Experts,
    I have done IDOC to JDBC scenario, the data is successfully going to SQL server in reciever side, but in reciever side they got local server and other server groups also there, the data ia m sending is going to local server group, so where can i mention the other server group name in reciever JDBC adapter.
    Kind Regards,
    Praveen.

    Hi,
    Except if there is a way to specity this in the URL field (either using a suitable properties or a specific syntax), I do not see such feature in the JDBC adapter ... I'm not familiar with SQLServer group concept, but maybe you could use multiple receivers instead ?
    So far, I haven't been able to see how to use groups in the URL ... Maybe there is way to trigger replication at SQLServer level ? Stored proc ?
    Chris
    Edited by: Christophe PFERTZEL on Dec 9, 2009 11:26 AM

  • Broken pipe error in Sync Send JDBC Receiver:   Extremely Serious issue

    Hi forum,
    I have a serious error in a JDBC->XI--> JDBC scenario,
    Step1: I use a sender JDBC channel to select some distinct values from  a table say X, and update the same rows,
    Query SQL Statement: select distinct Branch from dbo.X where status = 0
    Update SQL statement: update dbo.X set Status = 2 where Status = 0
    Step 2: enter BPM
    Step 3: enter a loop
    Step 4:make a synchronous call to the same table X, to fetch some records,
    SQL query: select * from X where status = 0 and Branch = i; Update X set status = 9 where Branch = i
    Step 5: close loop,  this loop iterates for 5 or 6 times depending on i, which is no. of branches selected by the sender JDBC channel
    so all the calls are to the same table, same databsse(SQL Server)
    the problem is when this sync calls happens in the loop, it some times gives following error, which i se in RWB:
    <b>Error Unable to execute statement for table or stored procedure. 'X' (Structure 'STATEMENT_X') due to com.microsoft.sqlserver.jdbc.SQLServerException: An exception occurred during the DBComms.transmit operation. Exception:Broken pipe (errno:32). Context:(2217)</b>
    i have no way to trace the cause of the error, the database is perfect and the error logs in the SQL server shows no trace of any error,
    Note: It works sometimes
    i dont know whom to approach, pls help
    the issue is very very serious as its in production system,

    Hi Sudeep,
    SAP Note 846079 - XI 3.0 JDBC Receiver: # of Retries on SQL Error w/o Effect
    Please check the following SAP note also - 831162
    Some info which i found there and can be relevant in to your scenario.....
    Q: I am using a JDBC Receiver Adapter in conjunction with the  Lotus Domino Driver for JDBC perform an INSERT or UPDATE operation on a database. When sending a message to the receiver, the Adapter Monitoring shows the following error message:
    "java.sql.SQLException: [Lotus][Domino Driver for JDBC]Invalid cursor state"
    Is there a fix for this issue?
    A: To work around this JDBC driver problem, activate the Advanced Mode for the respective JDBC Receiver channel and configure the setting "Number of Retries of Database Transaction on SQL Error" to a value > 0. Additionally, make sure that the setting "Database Auto-Commit Enabled" is also active as the Lotus Domino Driver for JDBC does not support transactions.
    Apply note 846079 before configuring this scenario.
    Q: The TCP/IP connection to my database host is running over an unreliable network connection, i.e. the connection is sometimes interrupted. Consequently, I sporadically receive an SQLException regarding a closed connection in the system trace or audit log or the connection as well as the JDBC Adapter channel are hanging.
    How can I work around this connectivity issue?
    A: Enable the "Advanced Mode" for the respective JDBC Adapter channel and select the option "Disconnect from Database After Processing each Message".
    Note that this might put additional load on your DBMS due to the creation of a new database connection for each message.
    I dont have access to a database right now, so i am not able to check this.
    Also check the JDBC driver compatability as mentioned in the above note.
    Cheer's

  • JDBC to JDBC scenario

    Hi All,
        I have one scenario in which I have to select data from one database (say D1) & insert into another database (say D2). Based on success or failure of insertion, I have to update the status message back in Sender database (D1).
         Now, when message is inserted in D2, I get back the insert count but if msg doesnt get inserted due to erros like invalid data record, i wont be getting any response, instead my receiver adapter will throw any exception.
        I need to use BPM to configure this scenario but I am not getting how to capture the exceptions here or How to achieve the success or failure of receiver insertion in XI.
    Any help is highly appreciated.
    PS: I have mapped my source records with access of Receiver structure so if error occurs , it will be a case of All or None insertion.
    Regards
    Sushil

    Sushil,
    1. You can make a Synchronous Call to the Receiver JDBC adapter that will return you the status of the Insertions. This will be the number of Succssful Inserts.
    Using this you can decide whether all were successful and then either trigger the update to the Sender to update all records with the correspodning flag.
    The Send STep that makes the call for the Insertion in the BPM will be a Synch Send Step . You can also wrap this with a Exception handler of the BPM and this will also trigger the exception handler where you can call the error mapping and so on.
    Look into the  Document Formats of the JDBC adapter in the online help for more on the Sync Insert call that returns the number of inserts.
    Regards
    Bhavesh

Maybe you are looking for

  • Get files out of version cue

    We are finally moving from version cue. Is there an easy way to access my files? I've heard an extraction takes forever.

  • Alignment problem on abap report after Unicode conversion

    Hi, I've recently convert my system to unicode. Now my user is complaining the aged debtor report (ABAP) is having a column alignment problem when displaying the Japanese character. I'm not sure what to do now. Have anyone experience this and let me

  • UME attribute mapping for lastpasswordchange to AD

    We are on EP 7.0 and are using Microsoft Active Directory 2003 as our user repository. I am using a writeable datasource configuration file to update passwords in AD from portal (SSL configured) For users who had password reset done through the porta

  • Premiere Elements 8 doesn't take advantage of all my RAM

    Hi, I'm running Premiere Elements 8 on a Windows 7 machine with 8 GB of RAM. Elements usually runs fine when editing standard-definition video, but slows down badly with HD. But when I check the system processes, I see that Elements never uses more t

  • Query Regarding Hide/Show Bean

    All, Is there any way by which we can control rendering (Controller processRequest call)of the Hide/Show and one click and disclose it, Render it.( Controller processRequest call) Seen that even if the hide/show is in hidden state , still the Region