Synchronous JDBC Call Commit

Hi All,
I have a Synchronous RFC(SAP) to Database(Oracle) scenario, the call to Database is via Stored Procedure in which i am inserting some data in database and returning a status flag back. I have two queries here:
1. What if the stored procedure is executed successfully, I get a status flag as "Success" from database and just before the response was sent back to SAP there is some comunication failure or any error while connecting XI to SAP. What will happen to the data inserted in table. Will it be still commited or rollback? As it is Synchronous process the data should not be commited untill the requestor system gets back the response. Any clues on this?
2. I need to pass a table type(basically a dyncamic array) as one of the parameters while invoiking Stored procedure. How it can be done?
I am connecting to Oracle 10g.
Looking for some quick answers.
Thanks
Amit

1) You can set Transaction Isolation Level=Serializable
To avoid data inconsistencies in the database when the isolation level is lowered, ensure that multiple database transactions cannot access the database simultaneously.
2)
<StatementName5>
<storedProcedureName action=u201D EXECUTEu201D>
    <table>realStoredProcedureeName</table>
<param1 [isInput=u201Dtrueu201D] [isOutput=true] type=SQLDatatype>val1</param1>
</storedProcedureName > 
  </StatementName5>
http://help.sap.com/saphelp_nw04s/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm

Similar Messages

  • Synchronized JDBC

    Hi this is slighly off topic.
    I'm new to Oracle (not Java) and am calling stored procs,
    using prepareCall, via JDBC (level 4) on Oracle 8.05.
    My Java app will have multiple threads inserting/updating. Do I
    have to synchronize my java calls (performance issue) or can
    Oracle handle multiple synchronous JDBC calls. Generally I would
    synchronize and will do unless someone tells me otherwise.
    Thanks for any help
    Ritchie
    null

    Oracle will handle multiple synchronous JDBC calls. The standard
    row locking behavior will apply though.
    Hope this helps,
    -Chris
    ritchie turner (guest) wrote:
    : Hi this is slighly off topic.
    : I'm new to Oracle (not Java) and am calling stored procs,
    : using prepareCall, via JDBC (level 4) on Oracle 8.05.
    : My Java app will have multiple threads inserting/updating. Do
    I
    : have to synchronize my java calls (performance issue) or can
    : Oracle handle multiple synchronous JDBC calls. Generally I
    would
    : synchronize and will do unless someone tells me otherwise.
    : Thanks for any help
    : Ritchie
    null

  • After call commit sql , data can not flush to disk

    I use berkey db which support sql . It's version is db-5.1.19.
    1, Open a database.
    2. Create a table.
    3. exec "begin;" sql
    4. exec sql which is insert record into table
    5. exec "commit;" sql
    6. copy database file (SourceDB_912_1.db and SourceDB_912_1.db-journal) to Local Disk of D, then use a tool of dbsql to open the database.
    7. use select sql to check data, there is no record in table.
    1
    sqlite3 * m_pDB;
    int nRet = sqlite3_open_v2(strDBName.c_str(), & m_pDB,SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,NULL);
    2
    string strSQL="CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );";
    char * errors;
    nRet = sqlite3_exec(m_pDB, strSQL.c_str(), NULL, NULL, &errors);
    3
    nRet = sqlite3_exec(m_pDB, "begin;", NULL, NULL, &errors);
    4
    nRet = sqlite3_exec(m_pDB, "INSERT INTO TBLClientAccount (ClientId,AccountId) VALUES('dd','ddd'); ", NULL, NULL, &errors);
    5
    nRet = sqlite3_exec(m_pDB, "commit;", NULL, NULL, &errors);
    Edited by: 887973 on Sep 27, 2011 11:15 PM

    Hi,
    Here is a simple test case program I used based on your description:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "sqlite3.h"
    int error_handler(sqlite3*);
    int main()
         sqlite3 *m_pDB;
         const char *strDBName = "C:/SRs/OTN Core 2290838 - after call commit sql , data can not flush to disk/SourceDB_912_1.db";
         char * errors;
         sqlite3_open_v2(strDBName, &m_pDB, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
         error_handler(m_pDB);
         sqlite3_exec(m_pDB, "CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );", NULL, NULL, &errors);
         error_handler(m_pDB);
         sqlite3_exec(m_pDB, "begin;", NULL, NULL, &errors);
         error_handler(m_pDB);
         sqlite3_exec(m_pDB, "INSERT INTO TBLClientAccount (ClientId,AccountId) VALUES('dd','ddd'); ", NULL, NULL, &errors);
         error_handler(m_pDB);
         sqlite3_exec(m_pDB, "commit;", NULL, NULL, &errors);
         error_handler(m_pDB);
         //sqlite3_close(m_pDB);
         //error_handler(m_pDB);
    int error_handler(sqlite3 *db)
         int err_code = sqlite3_errcode(db);
         switch(err_code) {
         case SQLITE_OK:
         case SQLITE_DONE:
         case SQLITE_ROW:
              break;
         default:
              fprintf(stderr, "ERROR: %s. ERRCODE: %d.\n", sqlite3_errmsg(db), err_code);
              exit(err_code);
         return err_code;
    }Than I copied the SourceDB_912_1.db database and the SourceDB_912_1.db-journal directory containing the environment files (region files, log files) to D:\, opened the database using the "dbsql" command line tool, and queried the table; the data is there:
    D:\bdbsql-dir>ls -al
    -rw-rw-rw-   1 acostach 0 32768 2011-10-12 12:51 SourceDB_912_1.db
    drw-rw-rw-   2 acostach 0     0 2011-10-12 12:51 SourceDB_912_1.db-journal
    D:\bdbsql-dir>C:\BerkeleyDB\db-5.1.19\build_windows\Win32\Debug\dbsql SourceDB_912_1.db
    Berkeley DB 11g Release 2, library version 11.2.5.1.19: (August 27, 2010)
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    dbsql> .tables
    TBLClientAccount
    dbsql> .schema TBLClientAccount
    CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );
    dbsql> select * from TBLClientAccount;
    dd|dddI do not see where the issue is. The data can be successfully retrieved, it is present in the database.
    Could you try putting in the sqlite3_close() call and see if you still get the error?
    Did you remove the __db.* files from the SourceDB_912_1.db-journal directory?
    Did you use PRAGMA synchronous, and if so, what is the value you set?
    If this is still an issue for you, please describe in more detail the exact steps needed to get this reproduced and provide a simple stand-alone test case program that reproduces it.
    Regards,
    Andrei

  • Sync JDBC call from ParForEach block in BPM (XI 3.0)

    Has anyone tried the following scenario:
    My BPM flow starts with a single message that I split using a message map into a list of messages to be sent synchronously to an Oracle stored procedure via the JDBC adapter.  After the mapping step, the flow goes into a ParForEach block that executes the sync Send step to the JDBC adapter, and then has a Container Action that collects the responses.
    My problem is that BPM seems to not like executing a synchronous send from inside a block.  The first execution of the send step will produce an error in the BPM flow.  The adapter framework, however, shows that the JDBC call executed normally and that the response message was sent back to the integration server.  There is no error indicated in SXMB_MONI, which inidicates to me that the response message was delivered successfully business server (the BPM flow).
    If anyone could shed any light or share any experience, it would be greatly appreciated.
    Chris

    Hi Chris,
    I am facing same situation how you configured BLOCK step for Sync response.Please let me know the flow how you configured.
    Srinivas.

  • Exception: Can't call commit when autocommit=true

    Hello,
    I'm trying to use WebLogic 7.0 with MySQL 3.23.49 and MySQL Connector/J JDBC driver
    2.0.14. Everything has been working just fine but now I keep getting exception:
    java.rmi.RemoteException: EJB Exception:; nested exception is:
         javax.ejb.EJBException: EJB Exception: : javax.transaction.HeuristicMixedException:
    (weblogic.jdbc.jts.Connection, HeuristicHazard, (javax.transaction.xa.XAException:
    Can't call commit when autocommit=true))
         at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:258)
         at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:208)
         at weblogic.ejb20.internal.BaseEJBLocalHome.postHomeInvoke(BaseEJBLocalHome.java:314)
         at weblogic.ejb20.internal.EntityEJBLocalHome.findByPrimaryKey(EntityEJBLocalHome.java:289)
         at com.nokia.m2m.demo.housemanagement.ejb.HouseBean_15mjuo_LocalHomeImpl.findByPrimaryKey(HouseBean_15mjuo_LocalHomeImpl.java:137)
         at com.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean.ejbCreate(HouseManagerBean.java:326)
         at com.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_Impl.ejbCreate(HouseManagerBean_wnwfw3_Impl.java:117)
         at java.lang.reflect.Method.invoke(Native Method)
         at weblogic.ejb20.manager.StatefulSessionManager.create(StatefulSessionManager.java:747)
         at weblogic.ejb20.manager.StatefulSessionManager.remoteCreate(StatefulSessionManager.java:799)
         at weblogic.ejb20.internal.StatefulEJBHome.create(StatefulEJBHome.java:159)
         at com.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_HomeImpl.create(HouseManagerBean_wnwfw3_HomeImpl.java:77)
         at com.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_HomeImpl_WLSkel.invoke(Unknown
    Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
         at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:114)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
         at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:785)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)
    ; nested exception is: javax.transaction.HeuristicMixedException: (weblogic.jdbc.jts.Connection,
    HeuristicHazard, (javax.transaction.xa.XAException: Can't call commit when autocommit=true))
    Is this because MySQL is non-transactional? Should I change to transactional tables
    with MySQL, tweak driver somehow to be "autocommit=false" or what?
    Any help is greatly appreciated.

    MySQL comes in two flavors - MySQL and MySQL-MAX. The second
    one supports TXs, the first one doesn't. That could be the case, too.
    Slava
    "Joseph Weinstein" <[email protected]> wrote in message
    news:[email protected]...
    Hi. It sounds like the DBMS doesn't handle standard transactions, and the
    driver lies. We'll set autoCommit(false) to start an EJB transaction. It
    sounds like the driver accepts the call and blithely ignores it. Later,
    when we prepared to call commit, the driver lets us know that theconnection
    is autoCommit(true) meaning there's nothing to commit.
    "Jari Länsiö" wrote:
    Hello,
    I'm trying to use WebLogic 7.0 with MySQL 3.23.49 and MySQL Connector/J
    JDBC driver
    2.0.14. Everything has been working just fine but now I keep gettingexception:
    >>
    java.rmi.RemoteException: EJB Exception:; nested exception is:
    javax.ejb.EJBException: EJB Exception: :javax.transaction.HeuristicMixedException:
    (weblogic.jdbc.jts.Connection, HeuristicHazard,(javax.transaction.xa.XAException:
    Can't call commit when autocommit=true))
    atweblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTra
    nsactionImpl.java:258)
    atweblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransaction
    Impl.java:208)
    atweblogic.ejb20.internal.BaseEJBLocalHome.postHomeInvoke(BaseEJBLocalHome.jav
    a:314)
    atweblogic.ejb20.internal.EntityEJBLocalHome.findByPrimaryKey(EntityEJBLocalHo
    me.java:289)
    atcom.nokia.m2m.demo.housemanagement.ejb.HouseBean_15mjuo_LocalHomeImpl.findBy
    PrimaryKey(HouseBean_15mjuo_LocalHomeImpl.java:137)
    atcom.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean.ejbCreate(HouseManag
    erBean.java:326)
    atcom.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_Impl.ejbCreat
    e(HouseManagerBean_wnwfw3_Impl.java:117)
    at java.lang.reflect.Method.invoke(Native Method)
    atweblogic.ejb20.manager.StatefulSessionManager.create(StatefulSessionManager.
    java:747)
    atweblogic.ejb20.manager.StatefulSessionManager.remoteCreate(StatefulSessionMa
    nager.java:799)
    atweblogic.ejb20.internal.StatefulEJBHome.create(StatefulEJBHome.java:159)
    atcom.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_HomeImpl.crea
    te(HouseManagerBean_wnwfw3_HomeImpl.java:77)
    atcom.nokia.m2m.demo.housemanagement.ejb.HouseManagerBean_wnwfw3_HomeImpl_WLSk
    el.invoke(Unknown
    Source)
    atweblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
    atweblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java
    :114)
    atweblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
    atweblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManage
    r.java:785)
    atweblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
    atweblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
    0)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)
    ; nested exception is: javax.transaction.HeuristicMixedException:(weblogic.jdbc.jts.Connection,
    HeuristicHazard, (javax.transaction.xa.XAException: Can't call commitwhen autocommit=true))
    >>
    Is this because MySQL is non-transactional? Should I change totransactional tables
    with MySQL, tweak driver somehow to be "autocommit=false" or what?
    Any help is greatly appreciated.

  • MySQL Exception in WL 8.1 - Can't call commit when autocommit=true

    Thanks in advance. Any help would be appreciated as I'm new to Weblogic. I've created a database control and get the following error at run time that I can't seem to get around:
    An unexpected exception occurred while attempting to locate the run-time information for this Web Service. Error: java.sql.SQLException:
    The server trace is as follows:
    ####<Jul 23, 2004 8:54:08 AM CDT> <Error> <WLW> <dts-client1> <cgServer> <ExecuteThread: '11' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <000000> <Exception processing ManageRouteTableJCS.ManageRouteTableTest
    java.sql.SQLException: Can't call commit when autocommit=true
         at com.mysql.jdbc.Connection.commit(Connection.java:1136)
         at weblogic.jdbc.wrapper.PoolConnection_com_mysql_jdbc_Connection.commit(Unknown Source)
         at com.bea.wlw.runtime.core.bean.BMPContainerBean.initTableAccess(BMPContainerBean.java:1650)
         at com.bea.wlw.runtime.core.dispatcher.DispComponentJar.confirmDeployment(DispComponentJar.java:157)
         at com.bea.wlw.runtime.core.dispatcher.DispResources.confirmDeployment(DispResources.java:754)
         at com.bea.wlw.runtime.core.dispatcher.DispCache.ensureDispUnit(DispCache.java:660)
         at com.bea.wlw.runtime.core.dispatcher.HttpServerHelper.getDispUnit(HttpServerHelper.java:501)
         at com.bea.wlw.runtime.core.dispatcher.HttpServerHelper.executeGetRequest(HttpServerHelper.java:541)
         at com.bea.wlw.runtime.core.dispatcher.HttpServer.doGet(HttpServer.java:81)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
         at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
         at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6456)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
         at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
         at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
    Note that the above error only occurs with the database control. When I use the following straight Java code I can read records from the database just fine:
    <%@page import="javax.naming.*,javax.sql.*,java.sql.*"%>
    <%
    Context ctx = new InitialContext ( );
    DataSource dataSource = (DataSource) ctx.lookup ( "MySQLDataSource" );
    Connection connection = dataSource.getConnection ( );
    Statement statement = connection.createStatement ( );
    ResultSet result = statement.executeQuery ( "select * from myTable1" );
    while ( result.next ( ) ) {
    out.print ( result.getString ( "field1" ) );
    out.print ( "<br>" );
    connection.close ( );
    %>
    I have experimented with disabling autconnect at the datasource with no change to the behavior.
    Environmet specifics:
    - Weblogic 8.1/SP3 (had the issue with SP2)
    - MySQL standard 4.1 (had the issue with 4.0 and MaxDB)
    - mysql-connector-java-3.0.14-production
    I have read many articles on using using MySQL and Weblogic using I/O classes but not an article where a control was created in design view as I have done. Since I am able to read from the database with the executeQuery command I am led to believe that I have the database and driver set up correctly.
    Anyone run into this and have an idea of what I don't have configured properly?
    Thanks,
    David

    Thanks in advance. Any help would be appreciated as I'm new to Weblogic. I've created a database control and get the following error at run time that I can't seem to get around:
    An unexpected exception occurred while attempting to locate the run-time information for this Web Service. Error: java.sql.SQLException:
    The server trace is as follows:
    ####<Jul 23, 2004 8:54:08 AM CDT> <Error> <WLW> <dts-client1> <cgServer> <ExecuteThread: '11' for queue: 'weblogic.kernel.Default'> <<anonymous>> <> <000000> <Exception processing ManageRouteTableJCS.ManageRouteTableTest
    java.sql.SQLException: Can't call commit when autocommit=true
         at com.mysql.jdbc.Connection.commit(Connection.java:1136)
         at weblogic.jdbc.wrapper.PoolConnection_com_mysql_jdbc_Connection.commit(Unknown Source)
         at com.bea.wlw.runtime.core.bean.BMPContainerBean.initTableAccess(BMPContainerBean.java:1650)
         at com.bea.wlw.runtime.core.dispatcher.DispComponentJar.confirmDeployment(DispComponentJar.java:157)
         at com.bea.wlw.runtime.core.dispatcher.DispResources.confirmDeployment(DispResources.java:754)
         at com.bea.wlw.runtime.core.dispatcher.DispCache.ensureDispUnit(DispCache.java:660)
         at com.bea.wlw.runtime.core.dispatcher.HttpServerHelper.getDispUnit(HttpServerHelper.java:501)
         at com.bea.wlw.runtime.core.dispatcher.HttpServerHelper.executeGetRequest(HttpServerHelper.java:541)
         at com.bea.wlw.runtime.core.dispatcher.HttpServer.doGet(HttpServer.java:81)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
         at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
         at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6456)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
         at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
         at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
         at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
    Note that the above error only occurs with the database control. When I use the following straight Java code I can read records from the database just fine:
    <%@page import="javax.naming.*,javax.sql.*,java.sql.*"%>
    <%
    Context ctx = new InitialContext ( );
    DataSource dataSource = (DataSource) ctx.lookup ( "MySQLDataSource" );
    Connection connection = dataSource.getConnection ( );
    Statement statement = connection.createStatement ( );
    ResultSet result = statement.executeQuery ( "select * from myTable1" );
    while ( result.next ( ) ) {
    out.print ( result.getString ( "field1" ) );
    out.print ( "<br>" );
    connection.close ( );
    %>
    I have experimented with disabling autconnect at the datasource with no change to the behavior.
    Environmet specifics:
    - Weblogic 8.1/SP3 (had the issue with SP2)
    - MySQL standard 4.1 (had the issue with 4.0 and MaxDB)
    - mysql-connector-java-3.0.14-production
    I have read many articles on using using MySQL and Weblogic using I/O classes but not an article where a control was created in design view as I have done. Since I am able to read from the database with the executeQuery command I am led to believe that I have the database and driver set up correctly.
    Anyone run into this and have an idea of what I don't have configured properly?
    Thanks,
    David

  • BPM synchronous RFC calls

    I have two messages, one coming from SOAP and second one from JDBC adapter. I want to map this two messages to Single BAPI call. How do I go about doing this using BPM.

    SSG,
    1. You will have a fork with 2 branches with 2 receiver steps. One for the SOAP request and the other the JDBC sender adapter.
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/24/e2283f2bbad036e10000000a114084/content.htm">Step Type - FORK</a>
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/cb/15163ff8519a06e10000000a114084/content.htm">Multiple Start Process Receiver Steps</a>
    2. Transformation Step -- N:1 mapping where the 2 source messages are mapped to the Single BAPI message.
    3. Send Synchronous Step -- You will be sending the BAPI request message and getting the Response message.
    You can use the <a href="/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit - File to RFC">File - RFC  - File</a> blog as a template to see how synchronous RFC calls are made and then , you can get the RFC response and do the needful as per requirements.
    Regards,
    Bhavesh

  • Synchronous SOAP call from XI without BPM....

    Hi All,
    Is it possible to use the (File - XI - SOAP) Synchronous SOAP call from XI with out BPM. to trace the error messages. If yes then how it can be achived in XI.
    Thanks,
    Jane

    Hi,
    You will get either a system error/application error raised if there is a problem processing the SOAP request without the need for BPM.
    You can then raise an alert from the RWB if this occurs.
    If all is OK with processing, you will get the standard chequered flag.
    Cheers
    Colin.

  • How to Use synchronous RFC calls during test run for remote accesses

    there is a Setting for the usage of RFC accesses from a tested system
    using eCATT.
    'X' - Use asynchronous RFC calls during test run for remote accesses
    ' ' - Use synchronous RFC calls during test run for remote accesses
    I developed an eCATT as following :
      SAPGUI ( SAPGUI_1 , Target_system_1 ).
      SAPGUI ( SAPGUI_2 , Target_system_2 ).
    My question is how to run the eCATT in a synchronous RFC calls
    PS: I do not want to change the Target_system to the same one in the
    above script of ecatt.Because I need to run it in 2 different Target
    systems sometime.
    for example, I give a Target_system_3 when run this eCATT
    I want the SAPGUI_1 and SAPGUI_2 run the Target_system_3 but not the
    Target_system_1 or Target_system_2 .
    Could you please tell me how to make it without the changes in script?
    Edited by: Weitong Liu on Mar 24, 2011 9:44 AM

    Hi Liu,
    Weitong Liu wrote:
    > ' ' - Use synchronous RFC calls during test run for remote accesses
    This is the standard option value. Asynchronous are not the standard way and used only for very special purposes.
    Weitong Liu wrote:
    > I developed an eCATT as following :
    >   SAPGUI ( SAPGUI_1 , Target_system_1 ).
    >   SAPGUI ( SAPGUI_2 , Target_system_2 ).
    > My question is how to run the eCATT in a synchronous RFC calls
    The commands will be executed in sequence. So each call will be synchronously replayed against TS1 and TS2.
    What is you issue with this standard procedure?
    Kind regards,
    Christoph

  • What to be given in JDBC receiver comm channel?

    Hi
    I have given
    JDBC driver:com.sap.aii.messaging.adapter.ModuleXMB2DB
    Connection:jdbc:microsoft:sqlserver://sapep:1433;DatabaseName=SAPXI
    am i giving correct params?
    please help me where and how to check whether iam using correct params in my JDBC receiver comm channel.
    Thanks

    Hi Datta,
    Check
    /people/siva.maranani/blog/2005/05/21/jdbc-stored-procedures
    /people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
    /people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter
    Best regards, Maksim Rashchynski.

  • Mapping SOAP Fault during synchronous SOAP call

    We are building a mediated service scenario where PI is brokering a synchronous SOAP call, without changing any of the information being sent or received (the mappings use the same source and target data types with no transformations).  When the service is successfully executed everything works as expected, but when the target service returns a SOAP fault, PI appears to be wrapping the fault in a separate fault before returning it to the client.  Why is this happening?  Is there a way to simply return the SOAP fault to the client without adding the additional wrapper?
    Here is the fault received from the target service when called directly:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Header/>
       <soapenv:Body>
          <soapenv:Fault>
             <faultcode>Missing_Required_Data</faultcode>
             <faultstring>**Required data is invalid : Dealer Country**</faultstring>
          </soapenv:Fault>
       </soapenv:Body>
    </soapenv:Envelope>
    Here is the fault received from the mediated PI service call:
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
                   <text>com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: XIAdapterFramework:GENERAL:com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: **Required data is invalid : Dealer Country**
         at com.sap.aii.adapter.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:1161)
         at sun.reflect.GeneratedMethodAccessor948.invoke(Unknown Source)
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    Why aren't they the same?

    are diferents coz the first is a fault message and the second is a exception message.
    to send back the fault message define a fault message for both structure and map them in a new message mapping. later in the operation mapping or interface mapping  (depends of the pi version) under fault message or fault mappinng (i dont remember) tab assisg the fault message mapping.
    thats all you need.

  • Synchronous JDBC adapter(receiver side) with stored procedure

    Hi experts,
    Can some database processing logic be included in receiver JDBC (synchronous) adapter...to put it simply
    I have synchronous JDBC adapter in the receiver side..Using this JDBC adapter I want to get some response back from the table..
    The requirement is not a simple fetch from the table..It involves some processing in the database side which I guess will be done by stored procedure..After this database processing , this output will be picked up by the JDBC adapter and will send to PI.
    How can this be achived ..Any Blog..
    Thanks
    Ayan

    Yes u can use stroed procedure and send back the response,
    refer this link for stored procedure structure.
    http://help.sap.com/saphelp_nw04/helpdata/en/64/ce4e886334ec4ea7c2712e11cc567c/frameset.htm
    chirag.

  • Performance - using JDBC call with 'order by' vs sorting data on app server

    Hello! I need some valid thoughts on the performance of using a JDBC call versus processing information on the application server.
    Here is the somewhat simplified scenario:
    I need to retrieve customer information (name, e-mail, telephone), display it in HTML format and then be able to redisplay it in a different order. For example, initially the list would be displayed sorted by last name, but then a user might choose to sort it by e-mail address. Initial call to DB uses 'order by' in the SQL stmt to get me the initial ordering by last name. Results are stored in 2D array. However, when a user selects a different sort I have two options:
    1) just make another call to the DB with a different order by clause. This means I need to create a DB connection, connect to DB, retrieve the results and read them from result set into a 2 dimensional array
    2) re-sort data in the 2D array populated during the initial call. This means I need to use java.util.Arrays.sort(my_2D_resultsArray, my_custom_comparator)
    Question is : which is more efficient? Number of entries retrieved can be anywhere from 0 to a few thousands (depending on other filters such as customer's country). My feeling is that option umber 2 is better, but I would like to get your opinion.
    Thank you!

    Good points! Thanks! I ran a test (see code below) and it takes less than a second to sort 2000 Strings and 2000 nulls. The only thing I ran the test at a UNIX prompt as oppose to from within app server (Weblogic). I expect the speed to be compatible though. Do you think that test was valid and tells us that sorting on the app server is probably faster than doing another SQL query?
    import java.io.*;
    import java.math.*;
    import java.util.*;
    import java.util.Arrays.*;
    public class Test {
      public static void main(String[] args) throws Exception {
        Test test = new Test();
        test.testSortingPerformance();
      public void testSortingPerformance() {
        Object[] objArray2 = new Object[]{};
        Vector v = new Vector();
        Date start, end;
        java.util.Random rd = new java.util.Random(2000);
        for (int i = 0; i < 2000; i++){
          v.add(new Object[]{new String("" + rd.nextInt())});
          v.add(new Object[]{null});
        objArray2 = v.toArray();
        Object[] innerObjArray2 = new Object[]{};
        MyComparator2 myComp = new MyComparator2();
        start = new Date();
        java.util.Arrays.sort(objArray2, myComp);
        end = new Date();
        for (int i = 0; i < objArray2.length; i++) {
          System.out.println();
          innerObjArray2 = (Object[])objArray2;
    for (int j = 0; j < innerObjArray2.length; j++) {
    System.out.print(innerObjArray2[j] + " ");
    System.out.println(v.size());
    System.out.println("Start " + start + " End " + end);
    import java.util.*;
    public class MyComparator2
    implements Comparator {
    //position in the inner array to use for comparison
    private int position = 0;
    //default empty constructor
    public MyComparator2() {
    //implement compare method
    public int compare(Object o1, Object o2) {
    Object[] strAr1 = (Object[]) o1;
    Object[] strAr2 = (Object[]) o2;
    if (strAr1[0] == null){
    if (strAr2[0] == null){
    return 0;
    else{
    return -1;
    else if (strAr2[0] == null){
    return 1;
    return ( (String) strAr1[0]).compareTo( (String) strAr2[0]);

  • Oracle 8i database hangs for the same amount during JDBC calls.

    Hi all,
    I have a Oracle 8i database on solaris. The database hangs for exactly 61 seconds for a random jdbc call from my Java application, i mean there is no particular pattern or a JDBC call for which the database hangs. If i choose to wait for 61 seconds it returns the results from the database but if i try to access the database with another query(SQL Plus) the first query starts executing immediately. Is that a database configuration problem or some thing else.
    And i also get some exceptions occasionally( Maximum Open Cursors exception). Are these two related?
    Any feedback is appreciated.
    Thanks
    Hugo Victor

    I have uninstalled Oracle 8i.
    Removed all the services from Windows services by deleting corresponding registry entries and deleted the Oracle folder.
    I have reinstalled Oracle 8i, this time i changed the name of global database to oracledb.
    I channged the tnsnames.ora file from DevSuite appropriately as:
    # tnsnames.ora Network Configuration File: C:\DevSuiteHome_1\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = mscserver)(PORT = 1521))
    (CONNECT_DATA =
    (SERVICE_NAME = ORACLEDB)
    Still it can't login using scott/tiger authentication.
    What may be the problem? Please help.
    -Sameer

  • Secured JDBC call from PI

    Hi,
    Please let me know the possibilities of secured JDBC call from PI. In JDBC adapter configuration, is it possible to achieve secured connection to Database server?
    I saw few similar threads in Forums but did not get much information.
    Thanks,
    Geetha

    ?Please let me know the possibilities of secured JDBC call from PI. In JDBC adapter configuration, is it possible to achieve secured connection to Database server?
    Yes, it is absolutely possible to secure the jdbc connection to database server.  You might have to do few things...
    Please follow this link
    http://wiki.sdn.sap.com/wiki/display/XI/EncryptioninscenariosinvolvingJDBCAdapterwithOracleDatabase
    You can encrypt  all the connection parameters including user name and password  between jdbc adapter and database server.  Use advance tab and do the recommended changes given in the above link.Similarly on the database server you have to do the same. You might have to take help from dba to set the similar settings on the database level too.

Maybe you are looking for

  • How to debug a WPF project that is part of a solution containing SSDT projects

    Hi all, you all surely know, that with SSDT deploying the solution against the development database is started with F5 or clicking one of the Debug buttons. One of my projects in such a solution is a simple Windows WPF-application designed to use ADO

  • Creating nested folders in the resource view

    Hi, Does anyone know if there is a way to create a set of nested folders in the resource view in one go? The following works if the path /home/cosmos already exists but fails if only /home exists, i.e. it looks like the createfolder method can only c

  • XMLDocument and xsl ??!! How to do that ??

    Hi all, i've an XMLDocument (java object) and a xsl file (on disk). I would like to generate HTML from that (from a servlet actually)...is it possible ?? Can u show me a piece of code ? Thanks a lot!! Javamad.

  • Export Query to Excel Issue

    I have created this query and placed it in query manager: SELECT T0.[CheckKey] as [Internal ID],T0.[CheckNum] as [Check No.],T0.[AcctNum] as [Acct No.],cast(t0.[checksum] as INTEGER),T0.[PmntDate] as [Issue Date] FROM OCHO T0 WHERE T0.[PmntDate] =[%0

  • Cannot access web resource after amserver success authentication.

    Linux+Apache 2.0.54+2.2 Agent 1. access pretected resource; [302] redirected to amserver login UI; submit login request; [302] redirected back to the target resource. 2. web page show [500], Internal Server Error 3. agent log [amagent] show: 2008-01-