Forum Stats

  • 3,854,197 Users
  • 2,264,340 Discussions
  • 7,905,603 Comments

Discussions

transaction not getting shared between application modules with passivation

nagarjuna.x.katta-Oracle
nagarjuna.x.katta-Oracle Member Posts: 2 Employee
edited Jun 28, 2018 5:43AM in JDeveloper and ADF

Hi All,

We needed help in resolving an issue we face with high load in our application, any help in this regards is highly appreciated. Details are as follows,

We were getting issues while setCurrentRowWithKeyValue from a page on high load, upon verifying it is observed it is an issue when passivation happens.

  1. We create rows in one Application Module
  2. And try setCurrentRowWithKeyValue through a different Application Module in child taskflow, as transaction control of all taskflows is ‘Use Existing Transaction If Possible’ and Datacontrol Scope is ‘Shared’
  3. Normally this works fine, but when pooling is off this doesn’t.

Below are the SR Details and Description

SR 3-17755860131

On : 12.2.1.2.0 version, ADF Core (Architecture, Model, Controllers, Business Comps. and Security)

Transaction is not getting transferred between Application Module with Passivation

Our application is having multiple Root Application Modules which do not query database, we have entities with all transient variables and view objects based on them added to Application Module. These view objects are populated using Web Service Proxies from application module methods.

We use bounded task flows with 'Use Existing Transaction If Possible' and 'Shared' options throughout application. When passivation happens application gives exceptions with Row Not Found (Transaction initiated in another AM, and looking for row in another AM).

This should not give error as all taskflows involved use 'Use Exiting Transaction If Possible' with DataControl Scope as 'Shared'.

But the following exception occurs:

<oracle.dfw.impl.incident.DiagnosticsDataExtractorImpl> <DiagnosticsDataExtractorImpl> <createADRIncident> <incident 84 created with problem key "ADFC-00032 [ADFc]">

<oracle.adf.view> <RichExceptionHandler> <_logUnhandledException> <ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase INVOKE_APPLICATION 5>

  • oracle.jbo.RowNotFoundException: JBO-25020: View row with key oracle.jbo.Key[-1 ] is not found in EmployeesViewIterator.

at oracle.adf.model.bc4j.DCJboDataControl.setCurrentRowInRSI(DCJboDataControl.java:1652)

ERROR

-----------------------

<oracle.dfw.impl.incident.DiagnosticsDataExtractorImpl> <DiagnosticsDataExtractorImpl> <createADRIncident> <incident 84 created with problem key "ADFC-00032 [ADFc]">

<oracle.adf.view> <RichExceptionHandler> <_logUnhandledException> <ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase INVOKE_APPLICATION 5>

  • oracle.jbo.RowNotFoundException: JBO-25020: View row with key oracle.jbo.Key[-1 ] is not found in EmployeesViewIterator.

at oracle.adf.model.bc4j.DCJboDataControl.setCurrentRowInRSI(DCJboDataControl.java:1652)

STEPS

-----------------------

We tried reproducing with a simple application, steps are as follows

  1. 1.Unzip the attachment PassivationExample_v3.zip
  2. 2.Open Jdev - Open Application - PassivationExample_v3\TwoRootAMsModel\TwoRootAMsModel.jws
  3. 3.Press Ctrl+Alt+Minus - type bc4j.xcfg - Select both files and Open them in Source Mode (Pooling is turned off to force passivation)
  4. 4.Change JDBCDataSource propery to any valid data source in integrated weblogic server
  5. 5.Right Click RootAMsModel project - Deploy using RootAMsModelLib profile
  6. 6.Open Application - PassivationExample_v3\ViewApplication\ViewApplication.jws
  7. 7.Press Ctrl+Alt+Minus and type index.jsf -Open the page and Run
  8. 8.In the browser Click Employee - Click Create Employee - Edit Employee

This should not give error as all taskflows involved use 'Use Exiting Transaction If Possible' with DataControl Scope as 'Shared'.

Thanks and Regards

Nagarjuna Katta

Tagged:

Answers

This discussion has been closed.