Problems in using Gplus Data Access Component to invoke SAP-RFCs

Hello integration-gurus!
We need to make RFCalls out of routing strategies within Genesys Universal Routing Server (URS).
We learned that we need to install the Gplus Data Access Component (DAC) in order to do so. After copying the rfc32lib.dll into installation directory of DAC the DAC establishes a valid RFC-connection to ourer SAP-CRM 5.0 system. But if the URS requests the definition of the specific remotefunction (the DAC provides this information as a WSDL for URS) it gets a timeout. Now we think that we need special files (perhaps XML-schemata provided by SAP) to transform the DDIC-types provided by the RFC into SOAP-specific datatypes communicated from DAC to URS.
Where can we get these files?
Has anyone experiences with such an integration scenario?
Kind regards
Michael

Hello integration-gurus!
We need to make RFCalls out of routing strategies within Genesys Universal Routing Server (URS).
We learned that we need to install the Gplus Data Access Component (DAC) in order to do so. After copying the rfc32lib.dll into installation directory of DAC the DAC establishes a valid RFC-connection to ourer SAP-CRM 5.0 system. But if the URS requests the definition of the specific remotefunction (the DAC provides this information as a WSDL for URS) it gets a timeout. Now we think that we need special files (perhaps XML-schemata provided by SAP) to transform the DDIC-types provided by the RFC into SOAP-specific datatypes communicated from DAC to URS.
Where can we get these files?
Has anyone experiences with such an integration scenario?
Kind regards
Michael

Similar Messages

  • We encountered a problem during use the Configtool access JAVA engine.

    We encountered a problem during use the Configtool access JAVA engine.
    Our environment of system as below:
    HardWard: IBM i570
    OS: IBM as/400 V5E3
    DB: DB2/400
    Application system:SAP XI 3.0
    The problem we encountered as below:
    Our company used XI 3.0 SR1 for exchange data between SAP R/3 and no-sap system.For now,we wanna create a backup system(for
    offline recovery),so we backup the XI product system throught entiry system save in AS/400(we stopped the XI system before
    save process start).And following,we restored from the tape that we save from XI product system to the new backup system(they
    are whole different paratition),but the problem is coming.Describe as following item:
    1. The application seem to can be started but the java node always restart circularly(We have 4 java node now),I think
    because of different of hardware configure(between XI product and Backup system) and lack of hardware resource.(XI prduction
    have 5 CPUs and 22G Mem,Backup system have 2 CPUs and 16G MEM ).Therefore we wanna decrease the number of java nodes for
    start application in backup system(throught configtool).
    2. We wanna use configtool to decrease the java nodes for start backup system.But we encountered a problem during running the
    configtool ,the information of prompt dialog as following:
    Error occurred while working with Configuration (Scanning).
    Msg:Error while connecting to DB.
    We also see the system.log that below the directory of usr\sap\PXI\DVEBMGS00\j2ee\configtool,and found some error as
    following text:
    #1.5#C0000A0008A8000000000000017A906E000423BFFC7246E0#1165207387826#/System/Configuration/Logging##com.sap.tc.logging.APILogg
    er.LogController[addLog()]#######Thread[main,5,main]##0#0#Info##Java#TC_LOGGING_CONFIGURATION_NEW_ITEMS
    [C0000A305666000000000002018FB1F70003D67C779ECE88]##The () has been added to the !#3#Log#.
    system.log#/System#
    #1.5#C0000A0008A8000000000001017A906E000423BFFC73A670#1165207388006#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###ConfigurationManager: found jar for secure store
    Z:
    sapmnt
    PXI
    global
    security
    lib
    tools
    iaik_jce_export.jar#
    #1.5#C0000A0008A8000000000002017A906E000423BFFC73CD80#1165207388016#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###ConfigurationManager: found jar for secure store
    Z:
    sapmnt
    PXI
    global
    security
    lib
    tools
    iaik_jsse.jar#
    #1.5#C0000A0008A8000000000003017A906E000423BFFC73CD80#1165207388016#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###ConfigurationManager: found jar for secure store
    Z:
    sapmnt
    PXI
    global
    security
    lib
    tools
    iaik_smime.jar#
    #1.5#C0000A0008A8000000000004017A906E000423BFFC73CD80#1165207388016#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###ConfigurationManager: found jar for secure store
    Z:
    sapmnt
    PXI
    global
    security
    lib
    tools
    iaik_ssl.jar#
    #1.5#C0000A0008A8000000000005017A906E000423BFFC73CD80#1165207388016#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###ConfigurationManager: found jar for secure store
    Z:
    sapmnt
    PXI
    global
    security
    lib
    tools
    w3c_http.jar#
    #1.5#C0000A0008A8000000000006017A906E000423BFFC9C25A0#1165207390660#/System/Configuration/Logging##com.sap.tc.logging.APILogg
    er.LogController[setResourceBundleName(String resourceBundleName)]#######Thread[main,5,main]
    ##0#0#Info##Java#TC_LOGGING_CONFIGURATION_IS_CHANGED[C0000A305666000000000000018FB1F70003D67C779CD2B8]##The for the
    has been changed from to )!#5#resource bundle
    name#LogController#com.sap.security.core.server.secstorefs.SecStoreFS#<null>#com.sap.security.core.server.secstorefs.SecStore
    FSResources#
    #1.5#C0000A0008A8000000000007017A906E000423BFFC9C4CB0#1165207390670#/System/Configuration/Logging##com.sap.tc.logging.APILogg
    er.LogController[setResourceBundleName(String resourceBundleName)]#######Thread[main,5,main]
    ##0#0#Info##Java#TC_LOGGING_CONFIGURATION_IS_CHANGED[C0000A305666000000000000018FB1F70003D67C779CD2B8]##The for the
    has been changed from to )!#5#resource bundle
    name#LogController#/System/Security/SecStoreFS#<null>#com.sap.security.core.server.secstorefs.SecStoreFSResources#
    #1.5#C0000A0008A8000000000008017A906E000423BFFCAC7D38#1165207391731#/System/Server##com.sap.engine.core.configuration#######T
    hread[main,5,main]##0#0#Info#1#com.sap.engine.core.configuration#Plain###OpenSQLDataSource successfully created with secure
    store.#
    #1.5#C0000A0008A8000000000009017A906E000423BFFCDA3070#1165207394726#/System/Configuration/Logging##com.sap.tc.logging.APILogg
    er.LogController[setResourceBundleName(String resourceBundleName)]#######Thread[main,5,main]
    ##0#0#Info##Java#TC_LOGGING_CONFIGURATION_IS_CHANGED[C0000A305666000000000000018FB1F70003D67C779CD2B8]##The for the
    has been changed from to )!#5#resource bundle
    name#LogController#/System/Database/sql/jdbc#<null>#com.sap.sql.log.OpenSQLResourceBundle#
    #1.5#C0000A0008A800000000000A017A906E000423BFFCDB41E0#1165207394796#/System/Database/sql/jdbc##com.sap.sql.jdbc.NativeConnect
    ionFactory#######Thread[main,5,main]
    ##0#0#Error#1#com.sap.sql.jdbc.NativeConnectionFactory#Java#com.sap.sql_0002#com.sap.sql.log.OpenSQLResourceBundle#SQL error
    occurred on connection : code={0,number,integer}, state="", message="".#5#-99999#08001#The application requester
    cannot establish the connection. (XIPRD)#jdbc:as400://XIPRD/SAPPXIDB;transaction isolation=read uncommitted;data
    truncation=true;date format=jis;time format=jis;sort=hex;hold input locators=true;hold statements=true;cursor
    hold=false#<null>#
    The "SQL error occurred on connection"  happened during start run configtool.
    We don't know how to solve this problem.
    Thanks

    I am unable to start my configtool.bat to administer JVM memory settings for my J2EE.
    Wait......
    Thanks

  • Problem in using CLOB Data from a Data and exporting into File

    Hi,
    UTL_FILE Error Occured while using UTL_FILE with CLOB Data.
    UTL_FILE: A write error occurred.
    The Below Code is for reference:
    DECLARE
    C_AMOUNT CONSTANT BINARY_INTEGER := 32767;
    L_BUFFER VARCHAR2(32767);
    L_CHR10 PLS_INTEGER;
    L_CLOBLEN PLS_INTEGER;
    L_FHANDLER UTL_FILE.FILE_TYPE;
    L_POS PLS_INTEGER := 1;
    BEGIN
         FILE_NAME:=UTL_FILE.FOPEN('EXPORT_DIR','EXPORT_FILE'||'.sql','W');
         FOR C1_EXP IN (SELECT INSERT_STRING FROM EXPORTED_DUMP) LOOP
         L_CLOBLEN := DBMS_LOB.GETLENGTH(C1_EXP.INSERT_STRING);
         DBMS_OUTPUT.PUT_LINE('THE CLOB LEN '||L_CLOBLEN);
         DBMS_OUTPUT.PUT_LINE('THE POSITION '||L_POS);
         WHILE L_POS < L_CLOBLEN LOOP
    L_BUFFER := DBMS_LOB.SUBSTR(C1_EXP.INSERT_STRING, C_AMOUNT, L_POS);
         DBMS_OUTPUT.PUT_LINE('THE BUFFER IS '||L_BUFFER);
    EXIT WHEN L_BUFFER IS NULL;
    UTL_FILE.PUT_LINE(FILE_NAME, C1_EXP.INSERT_STRING);
    L_POS := L_POS + LEAST(LENGTH(L_BUFFER)+1,c_amount);
    END LOOP;
         END LOOP;
    UTL_FILE.FCLOSE(FILE_NAME);
    EXCEPTION
    WHEN UTL_FILE.INTERNAL_ERROR THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: An internal error occurred.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.INVALID_FILEHANDLE THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: The file handle was invalid.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.INVALID_MODE THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: An invalid open mode was given.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.INVALID_OPERATION THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: An invalid operation was attempted.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.INVALID_PATH THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: An invalid path was give for the file.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.READ_ERROR THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: A read error occurred.');
    UTL_FILE.FCLOSE_ALL;
    WHEN UTL_FILE.WRITE_ERROR THEN
    DBMS_OUTPUT.PUT_LINE ('UTL_FILE: A write error occurred.');
    UTL_FILE.FCLOSE_ALL;
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE ('Some other error occurred.');
    UTL_FILE.FCLOSE_ALL;
    END;

    Hi user598986!
    OK, I understood that there is a problem with your code. But please would you be so kindly to tell us here what error exactly happens (the errormessage). Mabay after that someone will be able to help you.
    yours sincerely
    Florian W.
    P.S. If you enclose your code into tags it will be shown formated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • A problem when using a data element in BAPI

    Hi there,
    I build a function module, and want to use it as a BAPI. But when I add the function module as a method of a BAPI object, it gives me the following error: data type xxxxx cannot be used for methods.
    I guess the problem happens because of the type of data element I used for the input parameter of the function module. Thus I tried many other data elements, but I keep getting the same error. I am really out of the game. Could anyone tell me which data element I should use for the input parameter of the function module? The function module has only one input parameter, which should be a string with length less than 100.
    Thank you so much!!
    Sincerely,
    Bing

    The function module has only one input parameter, which should be a string with length less than 256. (I tried many predefined data element like RPLM_STRING, but when I tried to add the function module as a method of BAPI, the SAP always gave me the error: data type xxxxx cannot be used for methods)
    It only has one output parameter: RETURN (associated type: BAPIRETURN)
    I am really not familiar with ABAP program, let alone BAPIs. Any suggestions would be very helpful to me. I sincerely appreciate your help.
    Bing

  • Problem in Using Mass Data Getlist.

    Hi All,
    I am using a "Mass Data" Getlist for Salesorder. there are nearly 8000 records in VBAP table wich I want to bring it in Batches of 1000.
    I have modified my Getlist to the requirement as given in the document
    [http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/50fa3a06-8bcb-2c10-1daf-c604a4880361?quicklink=index&overridelayout=true]
    FUNCTION Z_SALES_MASS_GETLIST.
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(ME_MASS_REP) LIKE  MEREP_MASS_REP1 STRUCTURE
    *"        MEREP_MASS_REP1 OPTIONAL
    *"  EXPORTING
    *"     VALUE(RETURN) TYPE  BAPIRET2
    *"  TABLES
    *"      IT_ZSALESORDERHEADER STRUCTURE  ZSALESORDERHEADER
    DATA : LDF_VBELN LIKE VBAK-VBELN.
    LDF_VBELN = ME_MASS_REP-ME_KEY_GREATER_THAN.
    select *
    from   VBAK
    INTO   CORRESPONDING FIELDS OF TABLE IT_ZSALESORDERHEADER
      UP TO     ME_MASS_REP-me_number_of_headers ROWS
                       WHERE     VBELN > LDF_VBELN
                       ORDER BY PRIMARY KEY.
    ENDFUNCTION.
    The Problem is that when I call this BAPI  in the DOE using the adapter and trigger the initial download I am not getting in any data into the middlware from the backend.
    Please let me know where do I pass the values of ME_KEY_GREATER_THAN and ME_NUMBER_OF_HEADERS.
    Is it in the backend or through the middleware?
    Is that the reason why I am not getting in the data to the middleware?
    Edited by: krutheeka on May 3, 2011 6:31 AM
    Edited by: krutheeka on May 3, 2011 6:32 AM

    Hi ,
    I have placed a breakpoint as I mentioned previously in the Generated class GET_KEY at the code,
    e_IT_ZSALESORDERHEADER = lt_header.
    I am getting  the data into e_IT_SALESORDERHEADER. I have mentioned that I need data in batches of 1000 so when I
    excecute this method I get the records into the above structure in batch of 1000.
    but I am not able to see any data in the CDS.
    Someone please tell me what the problem might be..
    Thanks,
    Krutheeka.

  • Problem filtering using between dates

    Hi, I have a Measure in Webi that has to show the Invoicing Quantity between 2 dates. The thing is that i don't know how to do it and I tried many many times. The Dimension that has the date is a date field.
    The thing is that i tried to "check" if i'm mispelling something and I added the dates (start date and End DAte) as filters in the execution of the consult and it brings the data without any fail and also the correct quantities.
    How can I filter the invoicing quantities between 2 dates using a Measure?
    Thanks in advance,
    Reynaldo

    Hi Stratos, I have created a derived table in order to bring the Invoicing. The Dates aren't prompts fields, there are a Formula that if a launch the report today, it has to bring the invoices between monday and friday of last week, and also the sales of the last 21 days (that's the second column).
    The database is Oracle, I think the trouble is how the dates are shown by the DB, because are formated in DD/MM/YYYY HH:MM:SS and I need it only DD/MM/YYYY. I used the function To_date by oracle, but, still brings the HH:MM:SS, when I look for the values of the table.
    This problem, I think is going also to Webi and when I try to filter using a Measure doesn't bring data, but If I use the filter used by Webi (the one that modifies the query, brings the data ok)
    Can you help me?.
    Thanks in advance,
    PD: Hope you understand!
    Reynaldo

  • Cannot connect to database using Oracle Data Access

    I have been able to connect to my database through SqlPlus, but I cannot make the connection to the database through my ASP.Net program.
    I set up my connection string following the following format:
    *"Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X)(PORT = X)))(CONNECT_DATA =(SERVICE_NAME = SID)(INSTANCE_NAME = SID))(HS = OK)); User Id=Blah; Password=Blah";*
    When the program tries to open the connetion, it through
    OracleException was caught
    Oracle.DataAccess.Client.OracleException was caught
    Message=""
    StackTrace:
    at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx pOpoSqlValCtx, Object src, String procedure)*
    at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
    at Oracle.DataAccess.Client.OracleConnection.Open()
    at GlobalIQ.Services.DatabaseLayer.SetUpConnection() in C:\GlobalIQ\GlobalIQ\Services\DatabaseLayer.cs:line 30
    InnerException:
    I do not know if this is because I didn't set something up correctly or that I am missing something. Thanks in advance

    user13488403 wrote:
    I have been able to connect to my database through SqlPlus, but I cannot make the connection to the database through my ASP.Net program. ODP, ASP-NET providers etc. forums are here
    http://forums.oracle.com/forums/category.jspa?categoryID=44
    >
    I set up my connection string following the following format:
    *"Data Source= ... (HS = OK)) ...Is the HS part really needed?

  • Problems with JbuilderX anda Data Access componentes

    Hi everyone, i�m working with JBuilderX Foundation, I�m trying to create an applet wich can access to a database, when I run de project with F9 key, its work right but when I compile it and try to run from a html page its doesn�t work, and the java console shows me the following error:
    General Exception
    NoDefClassFound:com/borland/database/DataSet.
    Thanks

    Put that .class file or JAR in your CLASSPATH for JBuilder.
    %

  • Benefit using intermediate data-access obj btwn entity bean & data resource

    Hei to all,
    can anyone help me .
    Thanks for your valuable time.
    regards,
    manix

    A reduction in the amount of remote method invocations would be a start in improving performance of your applications. (ie get/sets performed on local object in lieu of remote object)

  • How to Install Oracle Data Access Components (ODAC) on Windows Server 2003?

    I recently installed "32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio" on my computer (Windows 7, 64bit). Everything seems fine and I can develop and run my application in Visual Studio 2010 and IIS 7.
    Now, when I deploy my application to the Server, it raises error:
    Exception: System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleCommand' threw an exception. ---> Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client
    Obviously I need to install ODAC on the server, too. My server is:
    - Windows 2003 32 bit R2 (I know, I know!)
    - IIS 6
    So. I downloaded the same installation from Oracle website (ODAC 11.2 Release 5 and Oracle Developer Tools for Visual Studio [11.2.0.3.20]) and installed it on the server. But still getting the same error.
    PS: When I was installing, I chose Oracle Data Access Component for Oracle Client 11.2.0.3.20 in Oracle Universal Installer. hmmmm. Should I choose "Oracle Server" instead? Screenshot
    Edited by: 1000434 on Apr 17, 2013 6:35 AM
    Edited by: 1000434 on Apr 17, 2013 6:36 AM

    ODP.NET, Unmanaged Driver uses unmanaged dependencies in the Oracle Client. The error you see means you have another Oracle Client installed on the Win2003 machine and ODP.NET is attempting to load the incorrect Oracle Client version, rather than the version you installed ODP.NET with.
    What you need to do is direct ODP.NET where to find the correct version of its unamanaged Oracle Client dependencies. This will be generally the bin directory of your Oracle Client home that was installed with ODP.NET.
    You can learn more about DllPath here:
    http://docs.oracle.com/cd/E20434_01/doc/win.112/e23174/InstallODP.htm#sthref94
    If you're not familiar with how to set ODP.NET settings in the Registry or .NET config files, you can read how to do that here:
    http://docs.oracle.com/cd/E20434_01/doc/win.112/e23174/featConfig.htm#sthref106

  • Problem with extract huge data in WEBI (Errors:WIO 30280 and ERR_WIS_30270)

    Hi gurus, need your help.
    When we run the query for the report we get an error in Web Intellegence .
    This error may be two types. And their rotation occurs randomly.
    First error: There is no memory available. Please close document to free memory (WIO 30280)
    Second error: An internal error occurred while calling the 'processDPCommands' API. (ERR_WIS_30270)
    When we try reopen WEB Intelligence, or reloading servers or machine, we have no   any results and get error again.
    I was try change different parametrs in universe designer for connection and universe, in central managment console for WEBI, but it's not solve problem
    This query select data from huge table (4,7 million rows), and when I use limit for maximum rows in WEBI my report working correctly.
    Is there any way to solve these problems associated with large data? What  is invoke this problem when we try to get full data?
    We use Business Objects Enterprise XI 3.1 version 12.4.0.966 
    Our system Windows Server  R2  Enterprise 2008 SP1 (64-bit system), Processor Intel 2.67 GHz (2 processors), RAM 8 Gb.                                                                               
    Thanks.
                                                                                    Ruslan

    Hi Brad,
    here we are talking about XI3.1 which has the limitations inherited from the operating system. as this blog post explains with plenty of details.
    In BI4.0 you can leverage larger datasets without any problems however you need to properly size and configure the services.
    There are several documents out there:
    How to configure the APS  http://scn.sap.com/docs/DOC-31711
    Companion Guide
    https://service.sap.com/~sapdownload/011000358700000307202011E/SBO_BI_4_0_Companion_V4.pdf
    Web Intelligence Sizing Guide
    https://service.sap.com/~sapdownload/011000358700001403692011E/BI_4_0_WEBI_NEW.pdf
    Best regards,
    Simone

  • How to use a data link file (UDL)

    Hi,
    several times I developed applications using Crystal Reports 2008 which used a data base on my development PC and when I deployed them on a production server I had the problem to change the Data Source Location to reflect the new Server name and SQL Server Instance. Moreover, this had to be done on the server, because CR 2008 check the new data source location when you change it, and because I was not connected to the server I couldn't do it on my development pc.
    I thought that the data link file was the solution to this problem, meaning that CR2008 could use a data link file (UDL file) as a data source location, so when deploying the reports on the server I had only to point the data link file to the new server instance.
    With my surprise, I have seen that when using a data link file to define the data source in CR 2008, it copies the definition found in it, instead of using it at run time. SO when I deploy the reports on the server I still have the same problem to change the data source location for all the reports.
    Perhaps I didn't understand the data link file use. So, how do I solve the problem of using a data source location that can be valid when deploying the reports on a server?
    Thanks

    Hi Antonio,
    Go to our download page above, there you will find samples to test with:
    http://www.sdn.sap.com/irj/boc/samples
    Or to .NET samples: http://www.sdn.sap.com/irj/boc/samples?rid=/webcontent/uuid/80774579-b086-2b10-db91-ed58c4dda375 [original link is broken]
    Find any of them that sets database location/log on.
    Thank you
    Don

  • Design patterns  for data access

    . What design patterns can be used for data access to ensure that only a minimum amount of data is maintained in session

    . What design patterns can be used for data access to
    ensure that only a minimum amount of data is
    maintained in sessionThat's not a design pattern, that's business logic.
    Your application has to determine what "minimum" means.
    Martin Fowler has lots of patterns for data access in his "Patterns of Enterprise Application Architecture". Check them out.

  • DbExecute tag for data access won't work

    On oc4j 1.0.2.2.1, I can update Oracle table by using dbExecute data-access tag. However, the same dbExecute tag won't make update on oc4j 9.0.2.1.
    Can anyone help?
    Thanks,

    It turns out dbExeute tag on newer oc4j need explicit COMMIT.

  • Data access Objects

    Deepak,
    Can you throw some light on the 'Data access Objects" pattern? and how it can be used with Entity beans? I am trying to apply this to the following scenario and having a hard time.
    We need users to be transparent of the data retrieval from various sources like oracle database, flat files or legacy storage. If I use the data access object pattern it is easier to use java classes in place of entity beans.
    Thanks
    Shreyas Kamat

    Shreyas,
    [For those not familiar with our Data Access Object Pattern, the
    beta version of the pattern is available on JDC (needs JDC login) at:
    http://developer.java.sun.com/developer/restricted/patterns/DataAccessObject.html]
    Data Access Objects (or DAOs) are objects that hide the database
    implementation from data clients. Data clients are any objects
    that need to retrieve data from the data source. And the data source
    could be anything that contains data, not necessarily only RDBMSs.
    For example, an external system could be a data source.
    Now using DAOs with Entity beans is applicable only in bean-managed
    persistence (BMP) scenario. In BMP, the entity beans are responsible
    to provide the data load and store implementation in the ejbLoad()
    and ejbStore() methods of the bean implementation. Without using
    the DAOs, the entity bean class will contain all the JDBC code (assuming
    that the data source is an RDBMS), SQL, etc. This makes the
    entity bean class bloated and difficult to manage when changes
    are made to the data logic. In addition, this tightly couples the
    data source implementation with the entity bean implementation.
    By using DAOs, the ejbStore() and ejbLoad() methods are much
    simpler. Also, it is easier to change from one datasource implementation
    to another by replacing the DAOs. Further flexibility is possible
    by employing the DAO factory strategy as described in the DAO pattern
    in our catalog.
    Coming back to you point about making the data access transparent
    to the clients; it is possible to achieve this by using DAO and
    DAO factory strategy. In the current version of the pattern,
    included in the book, we provide sample code to show how
    to design DAO classes and to apply DAO factory strategy.
    On your last point about using java classes instead of entity beans, this
    is not the intention of the DAO pattern. Entity beans serve a different
    purpose in the architecture as coarse-grained transactional components.
    entity beans use DAOs in BMP implementations, but are not replaced
    by DAOs. However, DAO classes are reusable. The same DAO that is
    used by an entity bean to retrieve some data in one application scenario,
    can be reused by a servlet in another application scenario
    that needs the same data, but does not use entity beans.
    So bottom line is that DAOs address the need to data access and
    manipulation and work together with entity beans in BMP implementations.
    thanks,
    -deepak

Maybe you are looking for