JBO-35007

I'm using jdeveloper 10.1.3.2 and ADF JSF and getting JBO-35007 when I return back from a list of values page. I use the same list of values for another very similar page without any errors.
On the page with the error I have a second list of values and this never gives an error. I've run out of ideas. Any help is appreciated.
Thanks in advance.
Carmen

This error occur when the iterator(s) used to render the page have a different current row at the time the page is submitted. This could occur due to inadvertently causing the VO query to re-execute (which would move the current row back to the first row), performing a rollback (which again would move the current row back to the first row), or performing programmatic change of the current row.

Similar Messages

  • 15 concurrent users and JBO-35007 row currency has changed

    Hi!
    Something for the weekend :)
    I have an ADF/BC 10.1.3.3. application on 10.1.3.3. Oracle AS. I use a jazn security with users and roles stored in database tables. While testing with one or two users I never ran into the same problem as we had this week when testing with 15 users. I have an entity and VO with a whole attributes that are edited in a couple of jspx pages that composed with process train control. There are also a couple of detail data edited on this page. I'm using ProcessScope quite a lot to pass some information between the pages.
    Well, to get to the point: when testing with 15 users we had A LOT of JBO-35007 row currency has changed since the user interface was rendered errors in this process. Every user was editing it's own data row. The error appeared every time a user left the application inactive for a couple of seconds, entered some data and clicked commit. I'm not aware of the security settings of the browser on the testing computers and I can't get them now to see if something like this could be the problem.
    When I checked the log files, there are a lot of errors or warnings in them. I'll try to sum the ones that might be important for this issue. These errors appear a lot's of times in these log files that is why I'm assuming some of these are connected to my issue.
    application.log file in application-deployments logs:
    08/04/23 09:58:42.443 MyViewControllerArchive: Servlet error
    java.io.IOException: An existing connection was forcibly closed by the remote host
    08/04/23 11:31:47.980 MyViewControllerArchive: Servlet error
    java.io.IOException: An established connection was aborted by the software in your host machine
    08/04/23 11:31:49.402 MyViewControllerArchive: Servlet error
    java.lang.IndexOutOfBoundsException: SelectOne submittedValue's index 0 is out of bounds. It should be between 0 and -1
    08/04/23 11:33:19.104 MyViewControllerArchive: An established connection was aborted by the software in your host machine
    08/04/23 11:33:19.104 MyViewControllerArchive: Servlet error
    java.io.IOException: An established connection was aborted by the software in your host machine
    A whole lot of these kind of errors:
    08/04/23 11:24:06.80 MyViewControllerArchive: Servlet error
    oracle.jbo.common.ampool.ApplicationPoolException: JBO-30019: An unavailable cookie state was detected while attempting to use a cookie. applicationId: 54ffe51d30d5c84e0cb1979645a196749529aeb674d8, sessionId: MyModuleDataControl.
    08/04/24 08:39:22.424 MyViewControllerArchive: Servlet error
    java.lang.IllegalStateException: Response has already been committed
    log.xml file in oc4j folder:
    <MESSAGE>
              <HEADER>
                   <TSTZ_ORIGINATING>2008-04-23T09:53:49.165+02:00</TSTZ_ORIGINATING>
                   <COMPONENT_ID>adfinternal</COMPONENT_ID>
                   <MSG_TYPE TYPE="WARNING"/>
                   <MSG_LEVEL>1</MSG_LEVEL>
                   <HOST_ID>my_AS</HOST_ID>
                   <HOST_NWADDR>my_IP</HOST_NWADDR>
                   <MODULE_ID>view.faces.model.binding.FacesCtrlRangeBinding</MODULE_ID>
                   <THREAD_ID>10</THREAD_ID>
                   <USER_ID>SYSTEM</USER_ID>
              </HEADER>
              <CORRELATION_DATA>
                   <EXEC_CONTEXT_ID>
                        <UNIQUE_ID>1208937229:my_IP:3020:1764:630</UNIQUE_ID>
                        <SEQ>1</SEQ>
                   </EXEC_CONTEXT_ID>
              </CORRELATION_DATA>
              <PAYLOAD>
                   <MSG_TEXT>rowIterator is null</MSG_TEXT>
              </PAYLOAD>
         </MESSAGE>
    <MESSAGE>
              <HEADER>
                   <TSTZ_ORIGINATING>2008-04-23T09:48:30.903+02:00</TSTZ_ORIGINATING>
                   <COMPONENT_ID>j2ee</COMPONENT_ID>
                   <MSG_ID>J2EE DS-00265</MSG_ID>
                   <MSG_TYPE TYPE="WARNING"/>
                   <MSG_LEVEL>1</MSG_LEVEL>
                   <HOST_ID>my_AS</HOST_ID>
                   <HOST_NWADDR>my_IP</HOST_NWADDR>
                   <MODULE_ID>datasource</MODULE_ID>
                   <THREAD_ID>12</THREAD_ID>
                   <USER_ID>SYSTEM</USER_ID>
              </HEADER>
              <CORRELATION_DATA>
                   <EXEC_CONTEXT_ID>
                        <UNIQUE_ID>my_IP:57162:1208526415373:226</UNIQUE_ID>
                        <SEQ>0</SEQ>
                   </EXEC_CONTEXT_ID>
              </CORRELATION_DATA>
              <PAYLOAD>
                   <MSG_TEXT>Unclosed connection detected : 'oracle.oc4j.sql.spi.ConnectionFinalizer@f67148' : ''.</MSG_TEXT>
              </PAYLOAD>
         </MESSAGE>
    <MESSAGE>
              <HEADER>
                   <TSTZ_ORIGINATING>2008-04-23T09:53:54.165+02:00</TSTZ_ORIGINATING>
                   <COMPONENT_ID>adf</COMPONENT_ID>
                   <MSG_TYPE TYPE="WARNING"/>
                   <MSG_LEVEL>1</MSG_LEVEL>
                   <HOST_ID>my_AS</HOST_ID>
                   <HOST_NWADDR>my_IP</HOST_NWADDR>
                   <MODULE_ID>controller.faces.lifecycle.FacesPageLifecycle</MODULE_ID>
                   <THREAD_ID>13</THREAD_ID>
                   <USER_ID>SYSTEM</USER_ID>
              </HEADER>
              <CORRELATION_DATA>
                   <EXEC_CONTEXT_ID>
                        <UNIQUE_ID>1208937232:my_IP:3020:508:635</UNIQUE_ID>
                        <SEQ>299</SEQ>
                   </EXEC_CONTEXT_ID>
              </CORRELATION_DATA>
              <PAYLOAD>
                   <MSG_TEXT>JBO-35007: My 35007 JBO message since I overwritten the message text</MSG_TEXT>
              </PAYLOAD>
         </MESSAGE>
    The problem is I can't reproduce this behaviour any more in my environment. If someone could maybe point me to the errors that are important and could be the cause of this errors. Could this be an internet browser security settings issue? What about those errors about aborted connections?
    If you can't provide me an answer (which I know it would be very difficult by the information provided), maybe you could explain the cause of some of the errors described above?
    I'd appreciate any tips on this since I don't have e an idea how and where to start to at least reproduce and find out the cause of this. Than I'll worry about the solution :).
    Thank you in advance,
    BB

    Hi,
    I am also facing the same issue JBO-30019: An unavailable cookie state is detected while attempting to use a cookie from application {0}, session {1}.
    Is there anyone who has been able to reproduce this. If yes can you please update the following bug which is logged for the issue: [9507310|https://bug.oraclecorp.com/pls/bug/webbug_edit.edit_info_top?report_title=&rptno=9507310&query_id=814000&rptno_count=1&pos=1]
    It will be of much help.
    I have found the following page referring the problem: page, if this helps.
    Please update.
    Regards,
    Ashis
    글 수정: user9546421

  • JBO-35007: ready to go postal....

    Hi,
    ADF BC/Faces 10.1.3.4
    Error: JBO-35007: Row currency has changed since the user interface was rendered
    Two pages with editable table connected by command link including set current row with key on the link for detail page.
    Back button is not being used. No VO's are being refreshed manually or otherwise. No refresh conditions on the executables in the page defs, no invoke actions.
    This is what happens (take notice of the row numbers):
    Main page has 10 rows displayed. Click on row 3 and go to detail page, detail page shows correct detail info for row three.
    Command link goes back to main page, nothing funky, just a navigation case.
    Main page again shows same 10 records, click on row 5 and see the detail page showing row 5's detail records.
    Click on command link back to main page and get JBO-35007 saying expected row key was row 1!!!
    Out of ideas here. Myself and another developer have spent collectively over two days on the problem. This is such fundamental stuff which we have used on so many other pages.
    The question is how is the UI expecting that it the row currency should be on the first row?
    Brenden

    Hello,
    we are developing a project using ADF 10.1.3. Most of our code is written in JDev 10.1.3.3. A couple of weeks ago we decided to patch AS to 10.1.3.4 and migrate our projects to JDev 10.1.3.4.
    First think we noticed is that the 'row currency changed' error started to appear at many pages that everything was running ok before.
    After a little research, we've also reached the same solution to turn USE_APPLICATION_VIEW_CACHE to false.
    My investigation results with USE_APPLICATION_VIEW_CACHE = true was these:
    A. we do an AS restart or start executing our code from JDEV so everything is clear and fresh.
    B1. we navigate to a page 'Page1' that retieves a row from db with vo.setNamedWhereClauseParam("varId", id) and vo.executeQuery() and then displays in output text attributes of row
    At this point ADF 'caches some view state at an application level' as manual says.
    B2. we press a command link (page postback and navigation to another page 'Page2') and everything works fine.
    B3. we do an application module.rollback and session invalidation
    C1. we navigate again to the first page 'Page1' and we retrieve another row from db. Attributes are displayed again correctly for the current row.
    C2. we press again the command link to navigate to another page and here we receive the 'row currency changed' error!!! Here, when adf did the postback, it retrieved row currency states and checked if they changed. The problem is that ADF 10.1.3.4 RETRIEVES ROW CURRENCY STATES FROM THE FIRST SEESION EVER EXECUTED ON APPLICATION LEVEL. So, even if our current row is row2 it still thinks that our current row is still row1. From now on even if we move at row3, at the postback of the page it will compare it with row1.
    There is something included in the 10.1.3.4 bugfixes list that seems relevant:
    ADF_FACES RT      4730863           APPLICATION VIEW CACHE NOT USED ON POSTBACK TO NEW PAGE

  • JBO-35007 error after custom navigation

    I have a SearchPersons page that has a Search Form and table for displaying results and Information About Person for displaying data about single person.
    When there is many results, data is displayed in the same page, later user can access Information About Person page via commandLink in table. Other story is when query returns one result- navigation rule navigates directly to Information About Person page. I have created SearchPersonsBean for handling these two different situations.
    The problem is when I try to go back from Information About Person page to SearchPersons page by clicking back button and try to use Search again, I get “JBO-35007: Row currency has changed since the user interface was rendered. The expected row....“. Also I need to have this person’s information in my result table, but I get it just after I get the JBO-35007 error.
    When I am removing my if (items == 1) statement from SearchPersonsBean, I get usal behaviuor – even if search returns one person result is displayed in the same page.
    So the problem is deffinetly in this if (items == 1) statement, but I don’t know how to fix this. Any kind of help would be greatly appreciated.
    Here is my code
    Simplified view of SearchPersons page:
    <af:panelBox>
    <!--Search parameter imputs-->
    <af:commandButton id="searchButton"
    actionListener="#{bindings.ExecuteWithParams.execute}"
    action="#{searchPersonBean.searchAction}"/>
    </af:panelBox>
    <af:table binding="#{searchPersonBean.resultTable}"
    rendered="#{adfFacesContext.postback}"
    value="#{bindings.SearchPersons.collectionModel}" var="row"
    rows="#{bindings.SearchPersons.rangeSize}"
    first="#{bindings.SearchPersons.rangeStart}" width="70%">
    <af:column headerText="#{lbl['personSearchResults.personalNumberLabel']}"
    sortProperty="PrsId" sortable="true">
    <af:commandLink action="view"
    actionListener="#{bindings.ExecutePersonInfoWithParams.execute}">
    <af:setActionListener from="#{'search'}"
    to="#{userStateBean.returnNavigationRule}"/>
    </af:commandLink>
    <<!--Other columns-->
    </af:table>
    PageDef:
    <executables>
    <iterator id="SearchPersonsIterator" RangeSize="10"
    Binds="SearchPersons" DataControl="AppModuleDataControl"
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh="renderModelIfNeeded"/>
    <variableIterator id="variables">
         <!—Search persons criterias->
    </variableIterator>
    <iterator id="PersonInformationIterator" Binds="PersonInformation"
    RangeSize="10" DataControl="AppModuleDataControl"
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh="renderModelIfNeeded"/>
    </executables>
    <bindings>
    <table id="SearchPersons" IterBinding="SearchPersonsIterator">
    <AttrNames>
    <!--atributes-->
    </AttrNames>
    </table>
    <action id="ExecuteWithParams" IterBinding="SearchPersonsIterator"
         <!—This action executes view query-->
    </action>
    <action IterBinding="PersonInformationIterator" id="ExecutePersonInfoWithParams"
    InstanceName="AppModuleDataControl.PersonInformation"
    DataControl="AppModuleDataControl" RequiresUpdateModel="true"
    Action="95">
    <NamedData NDName="PersonCode" NDValue="${row.PrsCode}"
    NDType="oracle.jbo.domain.Number"/>
    </action>
    </bindings>
    </pageDefinition>
    SearchPersonsBean:
    public class SearchPersonBean {
    private Integer personCode = null;
    private CoreTable resultTable = null;
    public String searchAction() {
    // -- default outcome
    String ACTION_OUTCOME = NavigationResults.SUCCESS.outcome;
    DCIteratorBinding interatorBinding =
    (DCIteratorBinding) getBindings().get("SearchPersonsIterator");
    long items = interatorBinding.getEstimatedRowCount();
    if (items == 1) {
    interatorBinding.setCurrentRowIndexInRange(1);
    Row firstRow = interatorBinding.getCurrentRow();
    personCode = (Integer) firstRow.getAttribute("PrsCode");
    OperationBinding executePersonInfo =
    getBindings().getOperationBinding(
    "ExecutePersonInfoWithParams");
    executePersonInfo.getParamsMap().put("PersonCode", personCode);
    executePersonInfo.execute();
    // -- set return action (on Cancel)
    UserState.assignReturnNavigationRule("search");
    ACTION_OUTCOME = NavigationResults.VIEW.outcome;
    // -- reset table's range navigator possition
    getResultTable().setFirst(0);
    return ACTION_OUTCOME;
    //~--- get methods --------------------------------------------------------
    private BindingContainer getBindings() {
    BindingContainer bindings =
    (BindingContainer) JSFUtils.resolveExpression("#{bindings}");
    return bindings;
    public Integer getPersonCode() {return personCode;}
    public void setPersonCode(Integer personCode) {this.personCode = personCode;}
    public void setResultTable(CoreTable resultTable) {this.resultTable = resultTable;}
    public CoreTable getResultTable() {return resultTable;}
    }

    I have removed elements that are not involved in createing this error.
    My pageDef now looks like:
    <executables>
    <iterator id="SearchPersonsIterator" RangeSize="10"
    Binds="SearchPersons" DataControl="AppModuleDataControl"
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh="renderModelIfNeeded"/>
    <variableIterator id="variables">
    <!—Search persons criterias->
    </variableIterator>
    </executables>
    <bindings>
    <table id="SearchPersons" IterBinding="SearchPersonsIterator">
    <AttrNames>
    <!--atributes-->
    </AttrNames>
    </table>
    <action id="ExecuteWithParams" IterBinding="SearchPersonsIterator"
    <!—This action executes view query--> </action>
    </bindings>
    And my cusom bean:
    public class SearchPersonBean {
    private Integer personCode = null;
    private CoreTable resultTable = null;
    public String searchAction() {
    // -- default outcome
    String ACTION_OUTCOME = NavigationResults.SUCCESS.outcome;
    DCIteratorBinding interatorBinding =
    (DCIteratorBinding) getBindings().get("SearchPersonsIterator");
    long items = interatorBinding.getEstimatedRowCount();
    if (items == 1) {
    // -- set return action (on Cancel)
    UserState.assignReturnNavigationRule("search");
    ACTION_OUTCOME = NavigationResults.VIEW.outcome;
    // -- reset table's range navigator possition
    getResultTable().setFirst(0);
    return ACTION_OUTCOME;
    I feel that the problem is because the data in the result table is not created, when after search there is only one result and bean navigates straight to Information About Persons page. After I go back with back button, there is no result dispalyed in my result table and when I refresh the page - JBO-35007 pops.
    I have no idea how to force the result to be displayed before navigation to Information About Persons

  • Row currency exception (JBO-35007)

    Hi, i am working with adf in a web project
    I have a list of records in one page, and another pages for some different processes. Everytime i select one record and go to some page of those processes, when i return, the selection goes to the first record, not to the previously selected one.
    I wrote this piece of code to ensure that the previously selected record is selected when i get back to the main page:
    private void setReportTableSelectedValue () {
    String parentReportId = this.getAppSystemState().getParentReportId();
    if (parentReportId != null) {
    DCBindingContainer dcBindingContainer = (DCBindingContainer) bindings;
    DCIteratorBinding dcIteratorBinding = dcBindingContainer.findIteratorBinding("reportIterator");
    Row[] rows = dcIteratorBinding.getAllRowsInRange();
    for (int i=0; i < rows.length; i++) {
    Row row = rows;
    String id = (String) row.getAttribute("codReport");
    if (id.equals(parentReportId)) {
    dcIteratorBinding.setCurrentRowIndexInRange(i);
    this.reportTable.setCurrencyString(String.valueOf(i));
    break;
    public void setReportTable(CoreTable table1) {
    this.reportTable = table1;
    this.setReportTableSelectedValue();
    The first method is the one that actually sets the session value of the selected record, back to the CoreTable so the selected record is the last selected. The second method is the setter for the CoreTable i am using to list the records.
    When i select a record, perform a process and get back to the main page for the first time, everything works fine. But when i try to do it a second time, it gives me this error:
    JBO-35007: Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[3 ] -
    How can i fix this ??
    thanks a lot

    Hi JMIGUEL77, i had the same problem.
    and I partially fixed setting EnableTokenValidation="false" in the PageDefinition.
    Regards,
    Luis Rocholl.

  • JMeter ThreadGroup Looping cause error- JBO-35007: Row currency has changed

    Hi all,
    Still Stress testing ADF Faces with JMeter,
    I try to simulate each user inserting multiple rows by setting Loop Count = nn on a JMeter Thread Group :
    Test Plan
    Thread Group
    Http Cookie Manager
    Once Only Controller
    1) MainMenu.jspx
    2) Login
    3) SalesMenu
    ***** end of Once Only Controller
    4) Add New Order -> this will open a blank Form after a new row is Inserted
    5) Submit the Form -> this will do entity validation
    6) Press Commit
    7) Back to SalesMenu
    *** end of test plan
    As you see, by using Once Only Controller, I want the looping of inserting new Order starts from step 4)
    But on step 5) I get the error :
    JBO-35007: Row currency has changed since the user interface was rendered.
    The expected row key was oracle.jbo.Key[-3649]
    Is ther any work around for this ?
    Thank you for your help,
    xtanto

    Hi Chris,
    Thank you for your reply
    A) is it the first iteration of the loop it fails? If not which iteration?
    No, first iteration is successfull, error occured on iteration-2.
    B) number 7, when you say back to the sales menu, by what means? Via browser back button?
    Not via back button, I do it using Global Navigation rule from action propeerty of <af:commandMenuItem
    C) your sales menu, does it use af:command controls or af:go controls?
    From SalesMenu to AddOrderPage -> using <af:commandMenuItem
    D) the number -3469. Is it familiar to you? A number you're generating via I'm curious to know why it's negative.
    Yes, negative is expected, its because I use DBSequence as PK, and on entering the AddOrderPage, a new Row is created, when created by ADF the PK is negative,
    then using a DB Before Insert Trigger I update it with a normal sequence.
    Does iteration / looping work in your case ?
    Thank you very much,
    xtanto.

  • [Master-Detail] JBO-35007: Row currency has changed since...

    Hi,
    I have a very annoying problem in ADF Faces with row currency:
    I have a "Master table - Detail table" relationship on a very simple test page based on the SRDemo's PRODUCTS and SERVICE_REQUESTS tables. Everything was done automatically: create Entities from Tables, create the SLSB facade, and create the tables on the page via dragging the accessor.
    Then I added a "Refresh" button on the page whose action handler is:
        public String btnRefresh_action() {
            DCIteratorBinding iterMaster = (DCIteratorBinding)bindings.get("findAllProductsIter");
            String rowKeyStrMaster = iterMaster.getCurrentRowKeyString();
            DCIteratorBinding iterDetail = (DCIteratorBinding)bindings.get("serviceRequestListIterator");
            String rowKeyStrDetail = iterDetail.getCurrentRowKeyString();
            iterMaster.executeQuery();
            iterMaster.setCurrentRowWithKey(rowKeyStrMaster);
            iterDetail.setCurrentRowWithKey(rowKeyStrDetail);
            return null;
        }And here's where the problem kicks in:
    1. I select the product with ID=100 (because it has multiple details).
    2. I select some detail. Say, the second one.
    3. I click on the "Refresh" button.
    4. The button's handler re-executes the iterator and restores the current rows on the tables. The page loads okay and the rows that were selected prior to clicking on the button continue to be selected appropriately.
    5. Now I click on the "Refresh" button again. And I get the error: "JBO-35007: Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[1 ]".
    Please, help. What should I do to prevent this error from happening? It it a bug in my code or a bug in the framework? When I only have one table (and not a Master-Detail relationship), everything works. The problem comes from the Detail table.
    We use EJB3 + JPA + ADF Faces. I tested the problem on JDev 10.1.3.3.0.4157 and JDev 10.1.3.2.0.4066.
    Best regards
    Bisser

    no post......
    Edited by: BaiG on Nov 2, 2010 2:21 PM

  • PBS !!! JBO-35007 row currency has changed

    Hello,
    I have a simple DB Table Person with 2 columns "FirstName", "LastName" which are required (not Null).
    I create a VO "PersonQuery" based on a VE "PersonneEntity", this last one is associated to the DB Table "Person".
    So, i use a create form based on the VO "PersonQuery". When i commit my form with at most one field leaves "blank" (the field is required and the client validation is to false), after second commit, i have JBO-35007 row currency has changed... After, i can't commit the form with values for all fields, because jdeveloper has a wrong row key !!! I have an error for each field which is blank for jdeveloper !!!
    If the row currency token mechanism is be turned off through the pageDef for my page, by setting the EnableTokenValidation to false, my initial creation form isn't blank but associated with the first record of the DB Table.
    Thank for your help !
    Bob

    Hi,
    Ok, i don't ignore the validation error. By switching off client validation, i want to use the server side validation for required fields. So, by using the server side validation for required fields, i obtain JBO-35007 error after the second submit (no commit) of my form which contents blank field. In this simple case, i don't understand why the VO is out of synch with the data displayed on the screen.
    More, why the row currency token mechanism is be turned off through the pageDef for my page, by setting the EnableTokenValidation to false, my initial creation form isn't blank but associated with the first record of the DB Table???
    Bob

  • Intermittent JBO-35007 (Row currency has changed...) and coordination

    I get an intermittent JBO-35007: Row currency has changed since the user interface was rendered. It is not repeatable - ie. if the user leaves the application and starts it again, whatever they were doing works ok. It happens about every hour when the user is doing constant testing. It is somewhat repeatable if you go into one of the screens it happens on, then leave the application open and do something else entirely for 30 - 40 minutes, when you come back and select a different record (using select radio button) it occurs, but even this is not always repeatable. It happens on our screens where we have master and details displayed on the one screen and both master and details are displayed as tables (ie. multiple records). The user says it happens most often when he is using the drop down on the master list that lets you see the next ten records.
    When the problem happens the master and detail records no longer coordinate, so the user can add a detail record to a master different from the one it appears to be adding too. I have told him to logout after a JBO-35007, but he doesn't think that the users will always remember to do that.
    We've just disabled the back button, although the tester is sure he wasn't using that. We've changed session timeout on web.xml so that it will timeout after 20 minutes of inactivity, so it can no longer occur after 30 minutes of inactivity, but it's still happening after that.
    Any suggestions would be greatly appreciated. Thanks.

    I've been assisting Anita and her team in tracking down this issue with JBO-35007 and then JBO-25013. Her team has done an excellent job in nailing this issue down, the problem is surprisingly simple to replicate once you know how, and can now be reproduced consistently.
    Anita and I would like ask for some assistance and advice from potentially the JDev crew and others on have they found a solution to this, and potentially strategies to reduce the issue. Anita has raised an SR, but as getting through 1st level support can be a pain in the butt, I'd thought we'd try a 2 pronged attack and see if we can get assistance from OTN.
    This is the scenario:
    1) There are 2 simple ADF Faces web pages, the 1st with a table, record selector and "edit" submit button to navigate to the 2nd screen. The 2nd screen is an input form for editing the record selected from the 1st page and a submit button to return to the 1st screen. Let's call these pages "view" and "edit" for simplicity.
    2) On the view page, the table selector has autoSubmit="true". This is important.
    3) On the view page there are multiple records showing. For simplicity we'll refer to three records X, Y and Z. By default on entry to the screen, record X is selected.
    4) The user on the view screen selects record Y via the table record-selector, and then presses the edit submit button. A side affect of selecting record Y with the autoSubmit is the underlying iterator row currency is updated, now pointing at Y.
    5) Today, the internet is running a bit slow for whatever reason, and the ADF Faces application doesn't reply instantly by showing the edit page. The user, a bit frustrated with the experience, changes their mind, and still with the view page showing because it hasn't updated yet, decides to pick record Z via the table record-selector, and presses the edit submit button again.
    6) This is actually two actions, as the table-selector's autosubmit results in another request to the midtier to update the iterator's row currency, and then the edit button to navigate to the edit page.
    7) Eventually the application responds, and it shows the edit page for record Y.
    It's a bit hard to guess here if it should actually show record Y or record Z. I don't mean this is a bug, but rather should it logically show record Y because that was the first user's action, or record Z because that's what the user selected. No matter, lets just accept the user sees record Y (possibly incorrectly thinking they're seeing record Z) and start updating the record.
    8) The user then presses the submit button on the edit page showing record Y, and JBO-35007 and JBO-25013 is thrown.
    Why is JBO-35007 thrown? I'd suggest that the selecting of record Z in step 5 & 6 is successfully updating the iterator's row currency, even though the edit page has yet to be fully rendered on the client's browser. It appears that the midtier has no way of knowing that the client has yet received the edit page, so it blindly accepts new requests from the client.
    This is actually similar to the back button problem, in terms of communications with the midtier. The solution to the back button problem at this stage appears to be "user education". However our problem is worse than the back button issue, as slow internet connections are a reality beyond their control, and expecting the users not to double click is stretching the "user education" solution thing a bit too far IMHO.
    A couple of separate points I'd like to raise:
    1) As for point 2 above, the table has autoSubmit set to true. This is the route of the problem and as such could be set to false. However when generating master-table-detail-table pages in JDev, typically you want the master's autoSubmit = true such that the detail table automatically refreshes when a new master record is selected. If we say no to autoSubmit, this means no to master-table-detail-table and is that reasonable as that is a feature in JDev.
    2) However, if the autoSubmit is set to false, the problem is not reproducible. I'd suggest when the user clicks on the submit button on the edit page in this case, the submit button has some sort of functionality to stop the user selecting the button twice until the midtier responds. Is this correct? Potentially there is Javascript functionality doing this? I'm aware on other Web-developer forums of discussions on the <body> tag onload & unload Javascript events to enable/disable buttons to stop multiple submit calls to the midtier. Does the ADF Faces command buttons do this? If such a feature exists, cannot this same functionality be added to the autoSubmit?
    3) We could turn off the tokenValidation in both pageDef, or a combination, but I think this a case where we do want the tokenValidation as the midtier and client are confused.
    4) JDev's HTTP Analyzer can assist in showing what's flowing between the browser and midtier, in particular that you can see the additional autoSubmit of step 5 & 6 sent from the browser.
    5) This issue becomes more prevalent on a slow internet connection. It is hard to produce "naturally" on a fast JDev install. However it can be reproduced by placing a breakpoint on the <afh:html> tag of the edit page and running the test in debug mode. When the breakpoint is reached on first navigating to the edit page, you can return to your browser, which is still showing the view page, select another record and submit, return to the debugger, and press continue.
    As mentioned if anybody could lend support with this issue it would be appreciated. Is there a solution to this? Is this is a bug? Any other thoughts appreciated.
    Thanks & regards,
    CM.
    PS. Anita, if you could add any clarifications if needed please.

  • JBO-35007: Row currency has changed since the user interface was rendered.

    Hello,
    I have made a search page. And from the search page I select an item and then update it. After updating I come back to the search page. When I again try to search I get this error (JBO-35007) on the page. No error is displayed in the console (Jdeveloper). I have set EnableTokenValidation="false" in the page definition page.
    Can someone please tell me what happens when I click the search button? Does the Entity Object cache also gets updated or checked? I am badly stuck at this place.
    Thanks,
    Sanjay

    Hi Sanjay,
    I hope this and this can help you!
    Regards,
    Samba

  • JBO 35007 Row Currency has changed - Master Detail Table

    Hi,
    I have a one master table and one detailed table. I can create rows in the master table with no errors. However, when I try to insert rows in the detailed table, I receive JBO-35007 error, Row currency has changed.
    How do I fix this?
    thank you

    We also has exact same error in Hyperion 11.1.1.3 on Windows 2003 with Oracle 11.1.7.0 database .. can someone advise please?
    Regards
    -Naveed-

  • JBO-35007: Row currency has changed.. when Rollback fom a Dialog page

    Hi All,
    From a page with an ADF Readonly table, I press 'Edit' button to edit some fields (not all) in an edit page as a Dialog page. Both page use same View Object Instance. Edit page has Commit and Rollback button.
    Since it is a dialog page , I add af:returnActionListener to the Rollback button
    If I press Commit its fine. But If I press Rollback, when I back to originating page I get this error :
    1. JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-35007: Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[IV 2107 SIU01 ]
    2. JBO-35007: Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[IV 2107 SIU01 ]
    How to solve this problem ?
    Thank you for your help,
    xtanto

    Doing a rollback by default clears the caches. This causes view objects to be requeried the next time they are needed, and causes the current row to be reset to the first row in the view object instance's default row set.
    This error means that the row that was current when the browse page was rendered is now no longer the current row. Token validation is set on the page definition for a JSF page. By default, token validation is on.
    To adjust the setting for token validation:
    1. Open the page definition file for the page.
    2. In the Structure window, select the root node for the page definition itself.
    3. In the Property Inspector, use the dropdown list for the
    EnableTokenValidation attribute to set validation to true to turn on token
    validation, or false to turn off token validation.
    Alternatively, if you cause a partial-page update on the base page, it should update it's notion of the current row and that is another way to avoid this error.

  • JBO-35007 row currency has changed - can timeouts cause this?

    A user of mine (JDev 10.1.3.1 ADF BC/ADF Faces) is experiencing the famed JBO-35007 row currency has changed error message after a period of inactivity (~35 minutes).
    Suspiciously sounds like a timeout to me. Can the row currency validation be invalidated by a timeout in the ADF framework? What side of the framework tracks the row currency? I'm guessing it's ADF Business Components. Can the timeout of the AM cause JBO-35007?
    Any help appreciated.
    Regards,
    CM.

    Hi John,
    it depends on the fact the failover feature is enabled or not (jbo.dofailover).
    When enabled, the HttpSession cookie that is stored in the HttpSession will also be stored on the browser (browser cookie), so that the framework can re-establish the link between a new HttpSession and the pending session state.
    As 35 minutes is the default of the HTTP session timeout, I suppose that Chris is working in failover mode, and that BC4J has some problem to re-activate the current row (maybe its key ?) correctly.
    Regards,
    Didier.

  • JBO-35007: Row currency has changed

    I have a search page that returns result to the same page. Result iterator is:
    <iterator id="SearchPersonsIterator" RangeSize="10"
    Binds="SearchPersons" DataControl="AppModuleDataControl"
    RefreshCondition="${adfFacesContext.postback}"
    Refresh="renderModelIfNeeded"/>
    After I get result to result table, I select any result and go to View person details page.
    If I click Back button and re-execute the query, I get:
    JBO-35007: Row currency has changed since the user interface was rendered. The expected row key was oracle.jbo.Key[268012 ]
    IF I hit Search again, error disappears
    This was discussed extensively in the forum and I understand the conceptual reason of this error and I think I need to reexecute the Iterator just when Search button is pressed. I try to use:
    RefreshCondition="${bindings.ExecuteWithParams}"
    Refresh="ifNeeded"
    or
    RefreshCondition="${bindings.ExecuteWithParams.execute}"
    Refresh="ifNeeded"
    Which in my opinion should work because bindings.ExecuteWithParams is action listener to my Search button?
    I also try:
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh="renderModelIfNeeded"/>
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh=" prepareModel"/>
    RefreshCondition="${tue}"
    Refresh="prepareModel"/>
    AND
    Refresh="ifNeeded"/> with no condition at all
    Nothing is working

    Ok, I didn’t sow the whole picture (usual stuff). I have another iterator
    <iterator id="PersonInformationIterator" Binds="PersonInformation"
    RangeSize="10" DataControl="AppModuleDataControl">
    PersonInformationIterator, after SearchPersonsIterator refresh, was in no-synchronization with SearchPersonsIterator. After setting refresh for bouth:
    RefreshCondition="${adfFacesContext.postback == false}"
    Refresh="renderModelIfNeeded"
    error disappears.
    I still don’t exactly understand why…but ecerything now works just fine

  • WARNING JBO-35007 after validator throws msg

    Could somebody help me understand what is going on here? I am trying to create a simple creation form on a table that has a field being populated with a db sequence. All seems to work fine until I put a backing bean method validator on one of the fields. Now when the validator fails (throws msg) and I try to correct the input I get the JBO-35007 msg. It seems that when the 35007 message comes back the iterator is now pointing at the first row in the table, instead of the newly created row. I am using 10.1.3.1.0 ADF BC w/ JSF. I have created the db objects (see below) and created an entity object with the id set to db_sequence, then a vo. The only other field in the table is description. I have created a simple validator that states if the user input a Z show an error. (see below). Can anyone tell me what I am doing wrong? I have tried to set refresh to never (thinking that was doing some weird invoke create and I have tried setting the enableTokenValidation to false to no avail.
    Thanks,
    Doug
    create table x1 (x_id varchar2(10), description varchar2(30));
    ALTER TABLE x1 ADD
    CONSTRAINT x1_PK
    PRIMARY KEY (x_id)
    ENABLE
    VALIDATE;
    CREATE SEQUENCE x_id_S
    START WITH 1;
    CREATE OR REPLACE TRIGGER ASSIGN_x_id BEFORE INSERT ON x1
    FOR EACH ROW
    BEGIN
    IF :NEW.x_ID IS NULL OR :NEW.x_ID < 0 THEN
    SELECT x_ID_s.NEXTVAL
    INTO :NEW.x_ID
    FROM DUAL;
    END IF;
    END;
    -- just get some data in
    insert into x1 values (null, 'a');
    insert into x1 (null, 'b');
    commit;
    validator
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.ValidatorException;
    public class Test {
    public Test() {
    public void description_validator(FacesContext facesContext,
    UIComponent uiComponent, Object object) {
    String myString = (String) object;
    if (myString.equals("Z")) {
    FacesMessage myFaceMsg = new FacesMessage("Do not use Z",
    "Must enter something other Z.");
    myFaceMsg.setSeverity(myFaceMsg.SEVERITY_ERROR);
    throw new ValidatorException(myFaceMsg);
    }

    Thanks for the quick reply. I have work on this a couple more hours this morning and still no luck. This can't be this complicated. I tried to set the refresh renderModel to ${!adfFacesContext.postback} and still no luck. I wasn't sure how to get the bindings.XId.inputValue < 0 in there as I kept getting coersion errors. I even tried to set it to no refresh and no luck. When I create the same type of scenario without the DBSequence I do not get the JBO-35007, so it has to be something in my entity object. Any other ideas? I guess I can redesign and use transient vo's, but that kind of defeats the purpose of all this cool ADF BC stuff. This is just a simple input form with some validation, I should be able to do this, right?

  • JBO-35007 in Portletized ADF Faces Page and alternative scenarios

    Hi all,
    I've started a new thread to address one of the problems referred to here Issues with Faces -> Portlet Bridge and ADF Faces
    In short, the issue arises when portletizing an existing ADF Faces page that uses an ADF BC bound af:Table on the page. I've got a very simple ADF Faces page that has an af:Table on it bound to the employees table in the Oracle HR schema. The af:Table allows sorting and has an af:selectTableOne in it's selection facet which contains an af:commandButton. The app works fine when run as a JSF page.
    However, when I use the JSF-Portlet bridge to publish the page as a portlet (following all of the steps in the Web Center Developer's guide, including changing the state_saving_method to "server"), and placing the portlet on a ADF Faces page in a different project, I can consistently create JBO-35007 errors by:
    * Sorting the data in the portlet by clicking the column header
    * Selecting a different row and pressing the af:commandButton
    Clearly, the current row of the iterator is not being saved properly. I can (of course) "fix" this behavior by setting EnableTokenValidation to "false" in the page definition of the ADF Faces page that has been portletized, but this has obvious side effects.
    Should this behavior work as I am trying to implement it? Perhaps it doesn't make sense to "select" an item in a portlet like this (what am I going to do, as the parent application doesn't have access to the selected row information).
    I can, however, think of a good use case:
    User is using a web-store type application to browse items and add them to his shopping cart. Off to the side, we've got a portlet that shows recently purchased items for the user. User clicks item in that portlet (or selects and hits submit - as in my non-working example, above) and then the main web store application navigates to that item in the "main" section. How could I implement something like this? Any navigation case in the portlet is not exposed to the main application. Perhaps there is a different model by which to do this.... I cannot use a PDK event-type approach (this limits my use of Faces to create portlets), so I'm in a bind.
    Thoughts and discussion much appreciated,
    John

    Peter,
    This should be so simple to re-create; here's my project: http://download.yousendit.com/F017E4D457FFA7F3
    It uses the HR sample schema from a stock 10gr2 database. Be sure to set up the ADF BC connection in the model project, build and deploy the portlets, then try running TestPage.jspx in the UserInterface project. You can play around with the pagedef in the Portlet project to see the JBO-35007 error - right now, EnableTokenValidation is set to false - you can change it to true to see the error.
    John

Maybe you are looking for

  • Select Query problem....too urgent

    Hi all! I am running oracle 8i. I have a table named taxsuamry. I want to arrange the data by exepenses in desc order and after sorting, i want to select first 50 records. I supplied the follwoing query: select expenses from taxsuamry where rownum<51

  • Adobe Reader could not open 'filename.pdf'" because it is either not a supported file type...

    I have a website that holds 23 different PDF's. They all download fine and open correctly when downloading from a Mac computer. They even download and open fine from a Mobile Phone. However my client is getting an error over and over again. I have te

  • Java.sql.SQLException: Cannot call rollback when using distributed transac

    Hi all, I am getting the below exception trace when I tried to rollback the data in WLI.I am getting the db connection Object from DBControl. java.sql.SQLException: Cannot call rollback when using distributed transactions at weblogic.jdbc.wrapper.JTA

  • How to find the Version of CRM system

    Hi All, I have to install CRM system and I dont have any other information other than the EWA Report, Can any one let me know how to find the Version of CRM system and we dont have Java installed in it (Generally we check WEBCUIF but as we dont have

  • Gmail saves Draft messages in Trash

    It seems that I when I set up my gmail account in Mail gmail wants to move old copies of a draft message to the trash as opposed to deleting it permanently or just over writing it. Is there any solution to this?