Stale data when db is shared

          I asked a question to a WebLogic salesrepresentative, how to avoid stale data when the db is shared, without doing ejbLoad() for each transaction.
          He told me that if two WebLogic Servers, in a cluster setup, access the same database, and have CMP entity EJB's deployed with dbIsShared=false, the containers communicate and inform eachother that an update has taken place, which id and home, which triggers an ejbLoad(), in the container that needs updating.
          I think he meant WLS6.0, but going through the docs I haven't found anything to confirm this.
          Is this possible in WLS6.0?
          

When you are using a WLS cluster, db-is-shared must be set to true.
          The EJB container will ensure transactional consistency by reloading the
          data on transaction boundaries.
          If you are attempting to model browsable data with entity beans, I would
          suggest that you look into read-only entity beans. These are cached
          throughout the cluster and periodically refresh themselves from the
          database. You can also look into the docs for the Read-Mostly pattern
          where readers access the cached read-only beans and transactional
          clients access a read/write bean.
          -- Rob
          hjo1620 wrote:
          >
          > I asked a question to a WebLogic salesrepresentative, how to avoid stale data when the db is shared, without doing ejbLoad() for each transaction.
          >
          > He told me that if two WebLogic Servers, in a cluster setup, access the same database, and have CMP entity EJB's deployed with dbIsShared=false, the containers communicate and inform eachother that an update has taken place, which id and home, which triggers an ejbLoad(), in the container that needs updating.
          >
          > I think he meant WLS6.0, but going through the docs I haven't found anything to confirm this.
          >
          > Is this possible in WLS6.0?
          

Similar Messages

  • Webi Reports - Stale data when saved a pdf/xls

    Hi Webi Guru's - we have a peculiar issue in our BOBJ Production system.
    To give you a bit of background on our production system - is hosted on
    O/S - EL 2.6
    Database - Oracle 11g
    IE version - 9
    2 Tomcat 6 servers, load balanced using F5 load balancer
    3 CMC cluster servers and 1 Oracle Database server
    CMC has BW 731 authentication
    Problem Description -
    Open any WEBI report. Pass a set of parameters. Most of the reports have from and todate as input parameters.
    On the first attempt we pass the fromdate = 5th May 2014, todate = 10th May 2014. Save the report as pdf/xls file. Saves with the correct data.
    Refresh the webi report - provide different set of date range as, fromdate = 12th May 2014, todate = 20th May 2014. Save the report as pdf/xls file. This time though the report brings out correct data set, when saved as a pdf/xls file, saves with data from date range that was passed the first time which was  fromdate = 5th May 2014, todate = 10th May 2014
    Have checked with our network team regarding if caching is enabled on tge F5 loadbalancer - an there is none.
    I did raise a incident with SAP support and it was closed down saying it is a third party issue at the load balancer level and recomended that I could check with the SCN community..
    Has anyone in the BI/BOcommumity come across this sort of problem before where you you have split installations and your web server is load balanced.
    Any help will be much appreciated.
    Thanks
    Savitha

    Hi Amit - thanks for your reply.
    If we run the reports directly from both the Web/Tomcat server - we get the correct result set saved in the PDF/XLS file. But it is not the case when we access the reports from the Load balanced URL. When we went live initially we had only one tomcat server, due to performanance issues we added additional tomcat server and since then we are noticing this issue.
    The immediate thing that came to our mind was - if there was a caching option enabled at the load balancer level. The network team have confirmed that it is not the case.
    We have enabled HTTPWatch to see if there was anything obvious we could spot - but there is nothing from the logs  which stands out either.
    The issue is only when we save the reports as in PDF/XLS format - saves the data with prompts from the previous refresh.
    Hope it all makes sense.
    Thanks
    Savitha

  • Stale Data error when invoking seeded OAF from a custom OAF page

    Hi All,
    We have a requirement in OAF where we have to open a Seeded OAF Page (Install Base) from our Custom Page. We are using the javascript function “openWindow()” to open the page in a new window. When we close the seeded page by clicking seeded page window using the Window-close button and then perform any event on the custom page, we get the Stale Data error as given below.
    Error: Stale Data
    The requested page contains stale data. This error could have been caused through the use of the browser's navigation buttons (the browser Back button, for example).
    Cause:
    The number of displayed records, 2, exceeds the actual number of records, 1, in view object OwqAM.IKNCICOWQDetailVO1. Some of the displayed records may have been deleted.
    Here is the part of code we have tried.
    String destination = "/OA_HTML/RF.jsp?function_id="+Func_Id+"&"+"resp_id="+Resp_id+"&"+"resp_appl_id="+Application_id+"&security_group_id=0&lang_code=US";
    String testDest = "javascript:openWindow(top,'"+destination+"',null,{width:750, height:550},false,'document',null);void(0);";
    OABodyBean bodyBean = (OABodyBean)pageContext.getRootWebBean();
    bodyBean.setOnLoad(testDest);
    Also this issue is encountered only when we open an OAF page in a new window. We also have a functionality where a JSP page is opened on similar lines, but above said navigations do not result in the same error.
    If anyone has come across such a issue and have a resolution, please let me know. Any pointers would be of great help.
    Thanks,
    Mrugesh

    Hi,
    We had tried passing RetainAM = Y and then bouncing apache. Still we were getting the same error.
    We are not facing the STALE DATA issue when we invoke JSP page and oracle forms. It is only when we launch a seeded OAF page from our custom OAF page that we are getting this error.
    Regards,
    Mrugesh

  • When click Previous 10 in inner table it show error Stale Data

    In inner table when it have more than 10 records it will automatic show navigate Previous 10 and Next 10 when click Next 10 don't have any error but when click Previous 10 it error as below (show white page).
    Error: Stale Data
    The requested page contains stale data. This error could have been caused through the use of the browser's navigation buttons (the browser Back button, for example).
    Cause:
    The number of displayed records, 10, exceeds the actual number of records, 1, in view object PostFundAM.FaoBudFundSrcsTempVO_FaoBudPeriodsFundTempVL_FaoBudFundSrcsTempVO. Some of the displayed records may have been deleted.
    To proceed, please select the Close Window link at the top of the application page to return to the main menu. Then, access this page again using the application's navigation controls (menu, links, and so on) instead of using the browser's navigation controls like Back and Forward.
    Could someone help me to solve this problem.
    thanks.

    Yes, there are 2 primary key column, in VO get data from EO.
    I found some solution about navigation as below in dev guid. Is it solution for solve this problem?
    Note: If you have a wide table that requires horizontal scrolling, you can prevent the Next and Previous links from appearing off the screen by setting the Width property of the advancedTable region to 100%.
    Runtime ControlFor event handling, specify the following code in your controller's processFormRequest to check for a navigation event:
    if (GOTO_EVENT.equals(pageContext.getParameter(EVENT_PARAM))
    To check whether the Next link or Previous link is selected:
    if ((tableBean.getName().equals(SOURCE_PARAM)) &&
    (GOTO_EVENT.equals(pageContext.getParameter(EVENT_PARAM)))
    String value = pageContext.getParameter(VALUE_PARAM);
    if (value != null)
    int val = Integer.parseInt(value);
    int newRangeStart = val - 1;
    if (tableVO.getRangeStart() < newRangeStart)
    // next pressed
    else
    // previous pressed
    thanks.

  • Sharing iPad2:  how to protect my own data when others use it?

    A single iPad2 is shared with others.  How do we protect individual data when others use the iPad?

    I use iCab and Comcast email with no problems. Try restarting your iPad. Try quitting iCab, restart the iPad and then try again. Just keep fighting the loop and see if you can ultimately get it to work if you have to.
    Try using the Connect Lite version of the Xfinity/Comast mail on the iPad. You will have to change that in the preferences on the server. It is in the general section. You want to select Xfinity Connect Lite. I have Comcst and I think this makes it a little easier to navigate and its a little more iPad friendly.
    If you want to be able to write mail in the Comcast webmail on the iPad you have to change to use Plain Text instead of HTML in the Composing preference. If you don't, the keyboard will not popup when you tap in the text field. You will be able to enter the email address in the To: field and the subject in the subject line but that is all unless you switch to plain text.
    I actually prefer the mail app on the iPad to using the Comcast webmail but that's just my preference.

  • To Dispaly stale data page when browser back button is clicked.

    Hi All,
    How can we display Stale Data Page when the browsers back button is clicked.
    thanks

    You have already raised a thread for this..
    To display Stale Data Page when browsers back button clicked.
    - Senthil

  • Stale data error:when clicked on lov

    Hi,
    In one particular form I'm having this issue. There are many lovs in this form. If I click on one lov and select a value, then immediately(before the value gets back to the text box of first lov) if I click on any other lov(I'm able to click on the second lov becuase this particular test enviroment is slow and while its processing the first lov, its allowing me to click on second lov. I'm not able to reproduce this in dev as the first lov value is returned immediately to the textbox ) I get this error message.
    The requested page contains stale data. This error could have been caused through the use of the browser's navigation buttons (the browser Back button, for example).
    Cause:
    The record with primary key values {233} could not be found in view object AM.RequestHeaderVO1.
    I tried to reproduce the issue in another custom form in the same test environment but it works fine for this one.
    Can anyone please help
    Thanks
    Sunny

    Hi one more point, I'm using pageContext.isLovEvent() in PFR. Could this be causing my issue?

  • Handle Stale data with ToplLink

    Hello,
    I try to implement cache policy on my Toplink 10.1.3 app.
    The main issue is that I have some tables that are updated by another application. I would like to use a cache with those tables because there are not updated often. But when they are updated, the cache must be refreshed.
    I've tried to configure the following caching policy in my descriptor without any success:
    Optimistic Locking:
    Version locking on a DATE field
    Store version in cache: false
    Caching:
    Type: Weak identity map / Soft subcache
    invalidation-policy: No expiry
    only-refresh-cache-if-newer-version
    Shared cache
    Coordination: change-set-with-new-objects
    Any idea?

    Marking the descriptor as isolated, means you will have no shared (ServerSession) cache.
    Each ClientSession or UnitOfWork will have its own local cache and read directly from the database, not from the ServerSession IdentityMap.
    If you use a ClientSession or UnitOfWork per request or per transaction, then you will always have fresh data, and will not need to call refresh.
    For always-refresh, you will not be disabling the ServerSession cache, there will still be a cache, you will just be refreshing it every time you read and object. This is not the recommend approach, isolating the descriptor is the recommended approach. However, 10.1.3 is a very old version, and the first release of the isolated cache support. Previously to 10.1.3 always-refresh was the solution to avoiding stale data.

  • Stale data error while opening a multiple OAF page .

    Dear Friends ,
    I have a OAF page developed and deployed in server , its basically a search page , it also has several links to
    go to create page and update page . when the user opens the multiple page using different tabs in the browser
    like for example
    ex :
    from search page click on create page open it as new tab . if such multiple table are being opened
    and do some operation like search a record , it gives and error (stale data : Developer's mode exception ) .
    How to over come this exception , could you please share you ideas
    Thanks in Advance,
    Keerthi.k

    Hi friend ,
    In Search page i didn't do any update. and also search page is not a problem it's working fine. create page only the problem. In this page only throwing Stale data error exception.
    Please give me more suggestion.
    Thanks in advance,

  • Stale data error while deleting a record

    Hi
    My design of this development is as follow...
    1. Search Page in which users give some search criteria and results will be displayed in the results region on the same page. For each results record I have two buttons like 'Update' and 'Delete' so that users can delete the record or can update the record. For update i created a one more page where users can able to edit and save the data. I have two AM one for Search Page and one for Update Page.
    Please find more details below.
    intfEO  based on PO_REQUISITIONS_INTERFACE_ALL
    errorEO  based on PO_INTERFACE_ERRORS
    updateEO based on PO_REQUISITIONS_INTERFACE_ALL
    VOs
    intfVO based on intfEO and errorEO
    updateVO based on updateEO
    AM
    intfAM based on intfVO
    updateAM based on updateVO
    Pages
    searchPG based on intfAM
    updatePG based on updateAM
    Suppose I have one record in interface table with corresponding error record in error table.When users given the search criteria and hit enter they found a record. It means i have one record in the interface having one error record in the error table and both tables have same transaction id (primary key). So here user first try to update the record and it is working. After update he try to delete a record then I am getting below error. Please note that I am not getting this error when if i directly delete the record with out doing any update before delete. When ever users click on update icon then update PG will open and when users click on Apply button then data is getting updated in the database and page will forward to the search page.
    Unable to perform transaction on the record.
    Cause: The record contains stale data. The record has been modified by another user.
    Action: Cancel the transaction and re-query the record to get the new data.
    My UpdatePage Controller
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package powl.oracle.apps.xxpowl.po.requisition.webui;
    import com.sun.java.util.collections.HashMap;
    import com.sun.rowset.internal.Row;
    import java.io.Serializable;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OADialogPage;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.form.OASubmitButtonBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageDateFieldBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
    //import oracle.apps.fnd.oam.diagnostics.report.Row;
    import oracle.apps.icx.por.common.webui.ClientUtil;
    import powl.oracle.apps.xxpowl.po.requisition.server.xxpowlPOReqIntfUpdateAMImpl;
    import powl.oracle.apps.xxpowl.po.requisition.server.xxpowlPOReqIntfUpdateEOVOImpl;
    * Controller for ...
    public class xxpowlPOReqIntfAllUpdatePageCO extends OAControllerImpl
      public static final String RCS_ID="$Header$";
      public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
       * Layout and page setup logic for a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processRequest(pageContext, webBean);
         xxpowlPOReqIntfUpdateAMImpl am = (xxpowlPOReqIntfUpdateAMImpl)pageContext.getApplicationModule(webBean);
          xxpowlPOReqIntfUpdateEOVOImpl UpdateVO =(xxpowlPOReqIntfUpdateEOVOImpl)am.findViewObject("xxpowlPOReqIntfUpdateEOVOImpl");
          String newvalue = (String)pageContext.getSessionValue("testValue");     
          System.out.println("Transaction ID from processRequest UpdateCO from testValue field:"+newvalue);
          String transactionid = pageContext.getParameter("HashmapTransacitonid");
          System.out.println("Transaction ID from processRequest Hash Map in UpdateCO :"+transactionid);
          String errorcolumn = pageContext.getParameter("HashmapErrorcolumn");
          System.out.println("Error Column Name from processRequest Hash Map in UpdateCO :"+errorcolumn);
          String errormsg = pageContext.getParameter("HashmapErrormessage");
          System.out.println("Error Message from processRequest Hash Map in UpdateCO :"+errormsg);
          String readyonly = pageContext.getParameter("HashmapReadonly");
          System.out.println("Read Only value from processRequest Hash Map in UpdateCO :"+readyonly);
          if (transactionid !=null & !"".equals(transactionid)) { 
         /* Passing below four parameters to the Update Page */
          Serializable amParams[] = new Serializable[]{transactionid,readyonly,errorcolumn,errormsg} ;
          pageContext.getRootApplicationModule().invokeMethod("executexxpowlPOReqIntfUpdateEOVO", amParams);
       * Procedure to handle form submissions for form elements in
       * a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processFormRequest(pageContext, webBean);      
         OAApplicationModule am = pageContext.getApplicationModule(webBean);
          if (pageContext.getParameter("ApplyButton") != null)
            System.out.println("Inside ApplyButton method in UpdatePageCO");
            OAViewObject vo = (OAViewObject)am.findViewObject("xxpowlPOReqIntfUpdateEOVO");
            String transactionid = pageContext.getParameter("HashmapTransacitonid");
            System.out.println("Transaction ID from processFormRequest Hash Map in UpdateCO-ApplyButton method :"+transactionid);
            am.invokeMethod("apply");
              pageContext.forwardImmediately("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllPG",
                                                     null,
                                                     OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                                     null,
                                                     null,
                                                     true,
                                                     OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
           else if (pageContext.getParameter("CancelButton") != null)
            am.invokeMethod("rollback");
            pageContext.forwardImmediately("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllPG",
                                                   null,
                                                   OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                                   null,
                                                   null,
                                                   true,
                                                   OAWebBeanConstants.ADD_BREAD_CRUMB_NO);
    UpdatePageAMImpl.java
    package powl.oracle.apps.xxpowl.po.requisition.server;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.OARow;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.inv.appsphor.order.server.XxapOrderHeaderVOImpl;
    import oracle.jbo.Transaction;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class xxpowlPOReqIntfUpdateAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public xxpowlPOReqIntfUpdateAMImpl() {
        /**Container's getter for xxpowlPOReqIntfUpdateEOVO
        public xxpowlPOReqIntfUpdateEOVOImpl getxxpowlPOReqIntfUpdateEOVO() {
            return (xxpowlPOReqIntfUpdateEOVOImpl)findViewObject("xxpowlPOReqIntfUpdateEOVO");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) {
            launchTester("powl.oracle.apps.xxpowl.po.requisition.server", /* package name */
          "xxpowlPOReqIntfUpdateAMLocal" /* Configuration Name */);
    /*  // Added by 
        public void execute_update_query(String TransactionID) {
        xxpowlPOReqIntfUpdateEOVOImpl vo = getxxpowlPOReqIntfUpdateEOVO();
        vo.initQuery(TransactionID);
    // Added by  , this will not call bec changed the logic and so now the update button enabled on search results page
    // and this method will not called
    public void pageInEditMode (String transactionID, String readOnlyFlag, String ErrorColumn,
                                                                           String ErrorMessage)
        System.out.println("Transaction Id from pageInEditMode in UpdatePGAMImpl.java: "+transactionID);
        System.out.println("xxReadOnly from pageInEditMode in UpdatePGAMImpl.java: "+readOnlyFlag);
        // Get the VO
        xxpowlPOReqIntfUpdateEOVOImpl updateVO = getxxpowlPOReqIntfUpdateEOVO();
        //Remove the where clause that was added in the previous run
        updateVO.setWhereClause(null);
        //Remove the bind parameters that were added in the previous run.
        updateVO.setWhereClauseParams(null);
        //Add where clause
        // updateVO.addWhereClause(" TRANSACTION_ID = :1 ");
        //Bind transactionid to the where clause.
         // updateVO.setWhereClauseParam(1, transactionID); // this will not work bec it will start with zero from from 1
          updateVO.setWhereClauseParam(0, transactionID);
        //Execute the query.
        updateVO.executeQuery();
        xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
        // Assiging the transient varaibles
        currentRow.setxxErrorMessage(ErrorMessage);
        currentRow.setxxErrorColumn(ErrorColumn);
        if ("N".equals(readOnlyFlag))
              /* Make the attribute to 'False so that all fields will be displayed in Edit Mode because we used this
               xxReadOnly as SPEL  */
               currentRow.setxxReadOnly(Boolean.FALSE);
       public void executexxpowlPOReqIntfUpdateEOVO(String transactionID, String xxReadyOnly, String ErrorColumn,
                                                                                              String ErrorMessage)
           System.out.println("Transaction Id from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+transactionID);
           System.out.println("xxReadOnly from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+xxReadyOnly);
           System.out.println("Error Message from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+ErrorColumn);
           System.out.println("Error Column from executexxpowlPOReqIntfUpdateEOVO in UpdatePGAMImpl.java: "+ErrorMessage);
         // Get the VO
         xxpowlPOReqIntfUpdateEOVOImpl updateVO = getxxpowlPOReqIntfUpdateEOVO();
         //xxpowlPOReqIntfUpdateEOVORowImpl updaterowVO = xxpowlPOReqIntfUpdateEOVO();
       //not working
       //    OARow row = (OARow)updateVO.getCurrentRow();
       //    row.setAttribute("xxReadOnly", Boolean.TRUE);
    // updateVO.putTransientValue('XXXXX',x);
         //Remove the where clause that was added in the previous run
         updateVO.setWhereClause(null);
         //Remove the bind parameters that were added in the previous run.
         updateVO.setWhereClauseParams(null);
         //Add where clause
         // updateVO.addWhereClause(" TRANSACTION_ID = :1 ");
         //Bind transactionid to the where clause.
          // updateVO.setWhereClauseParam(1, transactionID); // this will not work bec it will start with zero from from 1
           updateVO.setWhereClauseParam(0, transactionID);
        // updateVO.setWhereClauseParam(1, ErorrColumn); 
         //Execute the query.
         updateVO.executeQuery();
         /* We want the page should be read only initially so after executing the VO with above command
            and if you use next() it will go to the first record among the
            fetched records. If you want to iterate for all the records then use iterator */
            /* Using Iterator
             while(updateVO.hasNext()) {  // this will check after execute Query above command if it has any rows
              xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
              /* above line next() will take the control of the first record */
          /*     currentRow.setxxErrorMessage(ErrorMessage);
                 currentRow.setxxErrorColumn(ErrorColumn);
               if ("Y".equals(xxReadyOnly))
                      currentRow.setxxReadOnly(Boolean.TRUE);                 
             } // this while loop will loop till end of all the fetched records
         xxpowlPOReqIntfUpdateEOVORowImpl currentRow = (xxpowlPOReqIntfUpdateEOVORowImpl)updateVO.next();
      // Assiging the transient varaibles
      currentRow.setxxErrorMessage(ErrorMessage);
      currentRow.setxxErrorColumn(ErrorColumn);
        /* Make the attribute to 'TRUE' so that all fields will be displayed as READ ONLY because we used this
           xxReadOnly as SPEL
           if ("Y".equals(xxReadyOnly))
                  currentRow.setxxReadOnly(Boolean.TRUE);            
      //Added by  and this methiod will get called from UpdatePG Process Form Request controller  
         public void rollback()
           Transaction txn = getTransaction();
           if (txn.isDirty())
             txn.rollback();
        public void apply()
            //OAViewObject vo1 = (OAViewObject)getxxpowlPOReqIntfUpdateEOVO();
            //Number chargeAccountID = vo1.get
          getTransaction().commit();      
          OAViewObject vo = (OAViewObject)getxxpowlPOReqIntfUpdateEOVO();
          if (!vo.isPreparedForExecution())
           vo.executeQuery();
    SearchPG AM
    package powl.oracle.apps.xxpowl.po.requisition.server;
    import oracle.apps.fnd.framework.OAViewObject;
    import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
    import oracle.jbo.RowSetIterator;
    import oracle.jbo.Transaction;
    import oracle.jbo.domain.Number;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlErrosLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlInterfaceSouceCodeLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlItemSegment1LovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlOrgLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlReferenceNumberLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlRequestIdLovVOImpl;
    import powl.oracle.apps.xxpowl.po.requisition.lov.server.xxpowlRequisitionTypeLovVOImpl;
    // ---    File generated by Oracle ADF Business Components Design Time.
    // ---    Custom code may be added to this class.
    // ---    Warning: Do not modify method signatures of generated methods.
    public class xxpowlPOReqIntfAllAMImpl extends OAApplicationModuleImpl {
        /**This is the default constructor (do not remove)
        public xxpowlPOReqIntfAllAMImpl() {
        /**Container's getter for xxpowlPOReqIntfAllVO
        public xxpowlPOReqIntfAllVOImpl getxxpowlPOReqIntfAllVO() {
            return (xxpowlPOReqIntfAllVOImpl)findViewObject("xxpowlPOReqIntfAllVO");
        /**Sample main for debugging Business Components code using the tester.
        public static void main(String[] args) {
            launchTester("powl.oracle.apps.xxpowl.po.requisition.server", /* package name */
          "xxpowlPOReqIntfAllAMLocal" /* Configuration Name */);
        /**Container's getter for xxpowlRequestIdLovVO
        public xxpowlRequestIdLovVOImpl getxxpowlRequestIdLovVO() {
            return (xxpowlRequestIdLovVOImpl)findViewObject("xxpowlRequestIdLovVO");
        /**Container's getter for xxpowlErrosLovVO
        public xxpowlErrosLovVOImpl getxxpowlErrosLovVO() {
            return (xxpowlErrosLovVOImpl)findViewObject("xxpowlErrosLovVO");
        /**Container's getter for xxpowlOrgLovVO
        public xxpowlOrgLovVOImpl getxxpowlOrgLovVO() {
            return (xxpowlOrgLovVOImpl)findViewObject("xxpowlOrgLovVO");
      //Start Adding by Lokesh
      //This method wil get invoked from the search results page Process Request
       public void rollbackItem()
         Transaction txn = getTransaction();
         if (txn.isDirty())
           txn.rollback();
      //This method will invoked from Controller page when user click Yes on delete confirmtion page from Search Results Page
       public void deleteItem(String trasnsactionID)
         Number rowToDelete = new Number(Integer.parseInt(trasnsactionID));      
         OAViewObject vo = (OAViewObject)getxxpowlPOReqIntfAllVO();
         xxpowlPOReqIntfAllVORowImpl row = null;
         int fetchedRowCount = vo.getFetchedRowCount();
       //  System.out.print(fetchedRowCount);
         System.out.println("No of row fetched on delete method :"+fetchedRowCount);
         RowSetIterator deleteIter = vo.createRowSetIterator("deleteIter");
           System.out.println("1 :");
         if (fetchedRowCount > 0)
             System.out.println("2 :");
           deleteIter.setRangeStart(0);
             System.out.println("3 :");
           deleteIter.setRangeSize(fetchedRowCount);
             System.out.println("4 :");
           for (int i = 0; i < fetchedRowCount; i++)
               System.out.println("5 :");
             row = (xxpowlPOReqIntfAllVORowImpl)deleteIter.getRowAtRangeIndex(i);
               System.out.println("6 :");
             Number PK = row.getTransactionId();
               System.out.println("7 :");
             if (PK.compareTo(rowToDelete) == 0)
                 System.out.println("8 :");
               row.remove();
                 System.out.println("9 :");
               getTransaction().commit();
                 System.out.println("10 :");
               break;
                 //System.out.println("11 :");
           System.out.println("11 :");
         deleteIter.closeRowSetIterator();
           System.out.println("12 :");
        /**Container's getter for xxpowlInterfaceSouceCodeLovVO
        public xxpowlInterfaceSouceCodeLovVOImpl getxxpowlInterfaceSouceCodeLovVO() {
            return (xxpowlInterfaceSouceCodeLovVOImpl)findViewObject("xxpowlInterfaceSouceCodeLovVO");
        /**Container's getter for xxpowlRequisitionTypeLovVO
        public xxpowlRequisitionTypeLovVOImpl getxxpowlRequisitionTypeLovVO() {
            return (xxpowlRequisitionTypeLovVOImpl)findViewObject("xxpowlRequisitionTypeLovVO");
        /**Container's getter for xxpowlReferenceNumberLovVO
        public xxpowlReferenceNumberLovVOImpl getxxpowlReferenceNumberLovVO() {
            return (xxpowlReferenceNumberLovVOImpl)findViewObject("xxpowlReferenceNumberLovVO");
        /**Container's getter for xxpowlItemSegment1LovVO
        public xxpowlItemSegment1LovVOImpl getxxpowlItemSegment1LovVO() {
            return (xxpowlItemSegment1LovVOImpl)findViewObject("xxpowlItemSegment1LovVO");
    Search Page Controller
    /*===========================================================================+
    |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
    |                         All rights reserved.                              |
    +===========================================================================+
    |  HISTORY                                                                  |
    +===========================================================================*/
    package powl.oracle.apps.xxpowl.po.requisition.webui;
    import com.sun.java.util.collections.HashMap;
    //import com.sun.java.util.collections.Hashtable;
    import java.util.Hashtable;
    //import java.util.HashMap;
    import java.io.Serializable;
    import javax.servlet.jsp.PageContext;
    import oracle.apps.fnd.common.MessageToken;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.OAApplicationModule;
    import oracle.apps.fnd.framework.OAException;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OADialogPage;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
    import oracle.apps.fnd.framework.webui.TransactionUnitHelper;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    * Controller for ...
    public class xxpowlPOReqIntfAllSearchPageCO extends OAControllerImpl
      public static final String RCS_ID="$Header$";
      public static final boolean RCS_ID_RECORDED =
            VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
       * Layout and page setup logic for a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processRequest(pageContext, webBean);
        //Added by Lokesh
          OAApplicationModule am = pageContext.getApplicationModule(webBean);
         if (TransactionUnitHelper.isTransactionUnitInProgress(pageContext, "updateRecord", false)) {
               am.invokeMethod("rollbackItem");
               TransactionUnitHelper.endTransactionUnit(pageContext, "updateRecord");
       * Procedure to handle form submissions for form elements in
       * a region.
       * @param pageContext the current OA page context
       * @param webBean the web bean corresponding to the region
      public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
        super.processFormRequest(pageContext, webBean);
             String userClicked = pageContext.getParameter("event");
             System.out.println("Event from processFormRequest in SearchPageCO :"+userClicked);
           System.out.println("Parametere Names are :- \t" + pageContext.getParameter("UpdateImage"));
           System.out.println("Parametere Names are :- \t" + pageContext.getParameter("event"));
         if (pageContext.getParameter("event") != null &&
             pageContext.getParameter("event").equalsIgnoreCase("Update")) { 
             String ReqTransactionId=(String)pageContext.getParameter("transacitonidParam");
             String errorcolumn=(String)pageContext.getParameter("errorcolumnParam");
             String errormsg=(String)pageContext.getParameter("errormessageParam");
             String readyonly="Y"; //(String)pageContext.getParameter("readonlyParam");
             System.out.println("Requisition Transaction Id  : "+ReqTransactionId);
             System.out.println("Error Column  : "+errorcolumn);
             System.out.println("Error Message  : "+errormsg);
             System.out.println("Read Only  : "+readyonly);
             HashMap params = new HashMap(4);
             params.put("HashmapTransacitonid",ReqTransactionId);
             params.put("HashmapErrorcolumn",errorcolumn);
             params.put("HashmapErrormessage",errormsg);
             params.put("HashmapReadonly",readyonly);
             pageContext.putSessionValue("testValue",ReqTransactionId);
             //System.out.println("Transaction Id passing through HashMap :- \t" + ReqTransactionId);
             pageContext.setForwardURL("OA.jsp?page=/powl/oracle/apps/xxpowl/po/requisition/webui/xxpowlPOReqIntfAllUpdatePG",
                                        null,
                                        OAWebBeanConstants.KEEP_MENU_CONTEXT,
                                        null,
                                        params,
                                        true,
                                        OAWebBeanConstants.ADD_BREAD_CRUMB_YES,
                                        OAWebBeanConstants.IGNORE_MESSAGES) ;   
    else if (pageContext.getParameter("event") != null &&
             pageContext.getParameter("event").equalsIgnoreCase("Delete")) {   
        System.out.println("Inside Delete method in SearchCO");
        String deleteTransactionID=(String)pageContext.getParameter("deleteTransactionIDParam");
        System.out.println("Transaction Id in Delete Method :- \t" + deleteTransactionID);
      //  deleteTransactionID ="";  //Makeing Null because dont want to show the transaction id bec users dont know about it
        //MessageToken[] tokens = { new MessageToken("MESSAGE_NAME", deleteTransactionID) };
        MessageToken[] tokens = { new MessageToken("MESSAGE_NAME", "") };
        OAException mainMessage = new OAException("FND", "FND_MESSAGE_DELETE_WARNING", tokens);
        OADialogPage dialogPage = new OADialogPage(OAException.WARNING,mainMessage, null, "", "");
        String yes = pageContext.getMessage("AK", "FWK_TBX_T_YES", null);
        String no = pageContext.getMessage("AK", "FWK_TBX_T_NO", null);
        dialogPage.setOkButtonItemName("DeleteYesButton");
        dialogPage.setOkButtonToPost(true);
        dialogPage.setNoButtonToPost(true);
        dialogPage.setPostToCallingPage(true);
        dialogPage.setOkButtonLabel(yes);
        dialogPage.setNoButtonLabel(no);
        Hashtable formParams = new Hashtable(1);
        formParams.put("transactionIdDeleted", deleteTransactionID);
        dialogPage.setFormP

    Hi friend ,
    In Search page i didn't do any update. and also search page is not a problem it's working fine. create page only the problem. In this page only throwing Stale data error exception.
    Please give me more suggestion.
    Thanks in advance,

  • List View: How to force update of *actual* file dates when sort by date?

    List View: How do I force and update of actual file dates when sort by date?
    When I go in, I often see the sort order and dates from 12-15 hours ago!
    not good

    Hi, did you ever get that Windows® Sharing thing worked out?
    On this problem, If it's just that you need the Finder to wake up to the fact that it needs to update the window give a try with Refresh Finder - 1.3...
    http://www.versiontracker.com/dyn/moreinfo/macosx/33066

  • Several Issue: Stale Data Error with 2 pages opened at same time

    Hello Gurus,
    I developed an OAF page to create and also update records. My page, depending from the operation, can show the data on fields, for update, or blank, on case to create records. This page contains one LOV field, input fields and textarea field to get the data.
    When i try record or update using one page per time, the LOV field works fine and records are uptodated with success.
    But if i use 2 pages or more in these situations:
    - one page is opened in update operation;
    - another page to create a new record.
    Issue: When i click to change the LOV field value on create page, or update page, the Lov pop-up is opened with success, but when i click in another value, i get this error below. Any action also can cause this error, like click on Back Button (with name 'Voltar', created by me). Please see the error below:
    Error: Stale Data*
    The requested page contains stale data.*
    This error could have been caused through the use of the browser's navigation*
    buttons (the browser Back button, for example).*
    Cause:*
    The view object XXXAM.XXXVO1 contained no record.*
    The displayed records may have been deleted, or the current record for the view*
    object may not have been properly initialized.*
    This error hapens when i open 2 pages on update operation mode also.
    This error dont hapens only when i open 2 pages on create operation mode.
    Ps:
    Note: I have an ApplicationModule (AM) for LOV and another AM for this page, but i used this other AM to another page too and VOs. Have any problem on this???
    To help to understand, i printed my page, u can see the screenshots on links below:
    http://imageshack.us/a/img850/9186/printforum1.png
    http://imageshack.us/a/img197/2185/printforum2.png
    I´ll print some code blocks and if u need know more code blocks, please tell me:
    My PageCO Controller, at processFormRequest, code to define update or create Operation:
    +if (row.getNewRowState() == Row.STATUS_NEW) {+
    operationType = createOperation;
    +} else {+
    operationType = updateOperation;
    +}+
    My Controller, at processRequest, update or create operation:
    +if (!pageContext.isFormSubmission()) {+
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    String reqHeaderId =
    pageContext.getParameter("requisitionHeaderId");
    +Serializable[] params = {reqHeaderId};+
    IcxReceivingAlreadyExistsVOImpl receivingExistsVO = (IcxReceivingAlreadyExistsVOImpl)am.findViewObject("IcxReceivingAlreadyExistsVO1");
    receivingExistsVO.initQuery(reqHeaderId);
    +if (receivingExistsVO.hasNext()) {+
    TransactionUnitHelper.startTransactionUnit(pageContext, UPDATE_RECEIVER_TRX);
    am.invokeMethod("initPersonQuery", params);
    +} else {+
    TransactionUnitHelper.startTransactionUnit(pageContext, CREATE_RECEIVER_TRX);
    am.invokeMethod("createReceivingPerson", params);
    +}+
    +}+
    My AMImpl.java :
    +public void createReceivingPerson(String reqHeaderId) {+
    OAViewObject vo = getIcxReceivingPersonVO1();
    +if (!vo.isPreparedForExecution()) {+
    vo.executeQuery();
    +}+
    Row row = vo.createRow();
    vo.insertRow(row);
    row.setNewRowState(Row.STATUS_INITIALIZED);
    row.setAttribute("RequisitionHeaderId", reqHeaderId);
    +}+
    +public void initPersonQuery(String reqHeaderId) {+
    IcxReceivingPersonVOImpl vo = getIcxReceivingPersonVO1();
    +if (vo == null) {+
    +MessageToken[] errTokens = { new MessageToken("OBJECT_NAME", "IcxReceivingPersonVO1")};+
    throw new OAException("AK", "FWK_TBX_OBJECT_NOT_FOUND", errTokens);
    +}+
    vo.initQuery(reqHeaderId);
    +}+
    +public void apply() {+
    getTransaction().commit();
    +}+
    +public void rollback(){+
    Transaction txn = getTransaction();
    +if (txn.isDirty()) {+
    txn.rollback();
    +}+
    +}+
    In the hope of a solution, waiting for ur precious help, Gurus
    My true thanks since now,
    Best Regards,
    Alberto Bogéa

    Hi,
    Can you please tell, if you are using the same EO/VO combination for both the operation - Insert and Update on both screens.
    Quite possible, that when you open two screen in say Update Mode and you open the two List Of Values, then as soon as you have selected the value in one of the LOV, the Other LOV will throw you stale data as the same VO/EO is being used.
    Try using two different EOs/VOs combination and see if that helps.
    Regards,
    Saurabh Agrawal

  • Stale data error for a new page (based on an existing native sshr page)

    Without going into too much detail on why I'm doing this, I copied an existing oracle native page, renamed it, and loaded it into the MDS.
    I navigate to the page by creating an extension on a controller to take me to there on a button click. Also on this page, the native page that I copied is also accessible. There is a similar button click to take you to the native page.
    I had a business requirement to create records for the current year (the native page), and records for next year. Using a dff to differentiate between the two types of records was not an option.
    The copied page is used to simply create records. I extended the native controller to default a value behind the scenes (This is how I differentiaing between the current/next year records). The super.ProcessForm/superProcessFormRequest are there as well in this controller. From there, the page is using the same code as the native page that I copied.
    When I click the "Save As Draft", "Apply", "Cancel" buttons, it works fine.
    However, when I click on the "Apply Add Another" button, I'm getting the following error:
    The requested page contains stale data. This error could have been caused through the use of the browser's navigation buttons (the browser Back button, for example).
    Cause:
    The record with primary key values {13002} could not be found in view object
    AppraisalsAM.ObjectiveEditAM.ObjectivesVO.
    To proceed, please select the Home link at the top of the application page to return to the main menu.
    Then, access this page again using the application's navigation controls (menu, links, and so on) instead of using the browser's navigation controls like Back and Forward.
    I've researched this error all day today on prior postings/threads, and I haven't found a posting that is similar to the one that I outlined.
    I wouldn't think I would have to do anything programming wise since this is all native code, and the native page works fine. I'm guessing somewhere the native page is getting reference that is causing this error....
    Any help would be appreciated.
    Thanks

    You could use HIDE/UNHIDE funtionality for page 2
    1) create page 2 with all values ...
    2) on page 1 - add jJavascript to show or hide Page 2 dependin on value
    if (fieldvalue eq "condition") them
    Page2.presence = "visible"
    else
    Page2.presence = "hidden"
    endif

  • Stale Data Error in seeded OAF page

    Hi All,
    In my custom oaf page I used master-detail between two tables using PPR (with single selection radio button in master table). From time to time I get "Error: Stale Data ..."
    Absolutely the same error I was able to reproduce in seeded oaf page (R12.1.2):
    1. open OA Framework ToolBox Tutorial -> Sample Browser -> Partial Page Rendering (PPR)
    2. expand Coordinate Master Detail Tables
    3. select first record (Supplier Number 1) and wait when the page will be fully refreshed
    4. VERY FAST select second and immediately third record.
    After that I get:
    Error: Stale Data
    The requested page contains stale data. This error could have been caused through the use of the browser's navigation buttons (the browser Back button, for example).
    Cause:
    The number of displayed records, 3, exceeds the actual number of records, 1, in view object SampleBrowserAM.SupplierSitesVO1. Some of the displayed records may have been deleted
    Additional conditions:
    1. Your connection to server should be "a little slowly" (in my case it's VPN). If apps server is in your local network you can get response very fast and will not get error. In this case repate 1-4 several times.
    2. Browser - IE7 or IE8. In FireFox 3.6 works fine.
    Thanks in advance.
    Regards,
    Sergey

    Hi
    Are you using
    if (!vo.isPreparedForExecution()) if (! vo.isPreparedForExecution ())
    vo.executeQuery(); vo.executeQuery ();
    for VOs in process request of base page!For detailed explanation on this look at this thread: for VOs in process request of base page.
    Please refer this thread may be it help you out..
    Re: Page Refresh and Page Date Rollback
    Ajay

  • Stale data error while trying to update row.

    Hi,
    I have a search page, from where i would like to select a particular record and update some of its attributes. But when i try to commit the transaction, i get the error below:
    Unable to perform transaction on the record. \nCause: The record contains stale data. The record has been modified by another user. \nAction: Cancel the transaction and re-query the record to get the new data.
    My Results table, based on VO1(based on EO), has an image item which submits the page and opens another page with the details of the current record, and provides the user with an option to update one of the attributes. The second page, where the user updates the attributes is based on another VO (say VO2, which again is based on the same EO as VO1).
    Behind the Apply button, i call a method in the AM which simply commits the transaction and then re-directs to the original search page and displays the confirmation message.
    Pseudo Code:
    In the controller for VO1 (search page).
    if <update> then
    params = config_id ;
    am.invokeMethod("initSketchDetails,params) ;
    In AM
    public void initSketchDetails(String config_id)
    vo = getVO2 ;
    vo.initQuery ;
    In VO2Impl
    public void initQuery(String config_id) {
    <convert string to jbo.domain.number>
    setWhereClause("config_id = :1);
    setWhereClauseParams(null) ;
    SetWhereClauseParam(0,config_id);
    executeQuery();
    In the PFR of Controller for the Update Page
    if ("apply" != null)
    am = pageCOntext.getAM ;
    am.invokeMethod("apply") ;
    pageCOntext.forwardImmediately to results page ..
    AMImpl
    public void apply() {
    getTransaction.commit();
    Where am i going wrong?
    Thanks
    Ashish

    Hi,
    I noticed that this error is occuring only under certain conditions.
    In my application a particular record can have 4 statuses (Draft, Submitted, Cancelled and Technical Query). But when a record is being updated, it can only be updated to Draft, Technical Query or Cancelled.
    The error occurs ONLY when i am trying to update a record which is in Submitted Status to any other status. If i update a record from Draft -> Technical Query/Cancelled, there are no issues!!!
    I cant figure out where the problem lies.
    The poplist picks up values from a lookup.
    Any idea how to debug this situation?
    Thanks
    Ashish

Maybe you are looking for

  • Large Itunes Library Crashes Apple TV

    So, loading up my large itunes library (~150 MB) as a source causes the Apple TV to crash. It just sits at the "Loading so-and-so's Library" screen for a few minutes with the spinning wheel and then reboots itself. It goes all the way back to where y

  • Find the Dependenet reports in obiee

    Hi Professionals, We have a requirement where we have replace the fact table with a new fact table, but before doing that i need to find out how many reports are using the old fact table. is there a way we can get it in obiee 11g. Please let me know.

  • How to limit the selection of Ship To Party

    I have a Biz Case: "A" user have 2 Ship to party "B" and "C" in the customer master data, when I create a OR order, I found I can use "D" user as the ship to party(of course, A is sold to party). So I want to impl this function: if sold to party is A

  • Cannot Connect to PHP Service

    Hello, After the install, which went with out a hitch, I created a project and then proceeded to connect to a data/service. I select PHP, had it generate the sample service class file, was prompted to install Zend and then got an error that it is "Un

  • I have reformatted my computers yet again and because apple makes everything copmplicated I can not deauthorize until september 20, 2012! How do I bypass this?

    I have 3 Computers at home, I am studying computer sciences and am constantly rerformatting my computers, installing windows and linux over and over again.... EVERYTIME I reformat I have to authorize the same computer and so it takes up one of my 5 a