Application Module no commits until released

jdev-903 standalone oc4j-903... When I set configuration to run in 'local' mode, I can do am.getTransaction().commit() anywhere in the main routine or in the 'EJB' and the commits show up in the database. (This application can run for hours loading data.) When I set configuration to run in ias-ejb mode, the commits are not happening whether I do them in the ejb or back in the main. I turn on bc4j tracing and see the commits are doing something, but I don't see data in the database until I 'release' the application module. I have gone in and hacked the code to periodically do a release so that things work like I think they should. But it just doesn't make sense to me! A commit--should commit and data should appear in the database to all users. What is going on?

Here is some of the bc4j trace...
[1267] BaseSQLBuilderImpl Executing doSelect ... (true)
[1268] Reusing prepared LOCK statement
hdr 2003-03-04 11:52:59.367 714
hdr 2003-03-04 11:52:59.492 715
... 2003-03-04 11:52:59.554 commiting last 102
[1269] BaseSQLBuilder: setSavepoint 'BO_SP' ignored
[1270] BaseSQLBuilder Executing DML ... (Update)
[1271] Executing DML...
[1272] UPDATE XXQWD_HEADERS SET TIMESTAMP=?,LAST_UPDATE_DATE=? WHERE VALUE_ID=?
[1273] BaseSQLBuilder Executing DML ... (Update)
[1274] Executing DML...
[1275] UPDATE XXQWD_HEADERS SET TIMESTAMP=?,LAST_UPDATE_DATE=? WHERE VALUE_ID=?
[1276] BaseSQLBuilder Executing DML ... (Insert)
[1277] Executing DML...
[1278] INSERT INTO XXQWD_HEADERS(VALUE_ID,TEMPLATE_ID,TIMESTAMP,QW_RECORD_NUMBER) VALUES (?,?,?,?)
[1279] BaseSQLBuilder Executing DML ... (Insert)
=========== many, many lines of insert statements
[1586] Executing DML...
[1587] INSERT INTO XXQWD_VALUES(VALUE_ID,QW_FIELD,VALUE) VALUES (?,?,?)
[1588] BaseSQLBuilder: releaseSavepoint 'BO_SP' ignored
[1589] PgiQSetupView notify COMMIT ...
[1590] XxqwdTemplatesView notify COMMIT ...
[1591] XxqwdHeadersView notify COMMIT ...
[1592] XxqwdValuesView notify COMMIT ...
[1593] EntityCache close prepared statement
... 2003-03-04 11:53:02.023 finish 0
[1594] Clearing VO cache for XxqwdValuesView
[1596] Clearing VO cache for XxqwdHeadersView
[1597] Clear QueryCollection in cache...
[1598] Clearing VO cache for XxqwdTemplatesView
[1599] Clear QueryCollection in cache...
[1600] PgiQSetupView notify COMMIT ...
[1601] XxqwdTemplatesView notify COMMIT ...
[1602] XxqwdHeadersView notify COMMIT ...
[1603] XxqwdValuesView notify COMMIT ...

Similar Messages

  • Commit on one application module also commits the other

    Jdev 11.1.1.4
    I have a fusion ADF application where I have defined two Data Controls.
    One is called AppModuleDatacontrol and the other AppModuleWSDataControl.
    I do this in order to be able to commit DML made on one Data Control independently of the other.
    The problem is that when a do something like:
    AppModuleWSImpl am=(AppModuleWSImpl)Util.getApplicationModule("AppModuleWSDataControl");
    am.getTransaction().commit();
    Errors on VO of AppModuleDataControl are raised. They were not expected to be raised !
    I have activated ADF logs and just after executing
    AppModuleWSImpl am=(AppModuleWSImpl)Util.getApplicationModule("AppModuleWSDataControl");
    and before executing the commit I get:
    <BindingContext> <findDataControl> [4147] INFO: no refreshRegion, skipping cpx codebase lookup on AppModuleWSDataControl
    <BindingContext> <put> [4148] BindingContext.put( AppModuleWSDataControl@edu_esade_view_DataBindings_cpx, oracle.jbo.uicli.binding.JUApplication )
    <PropertyManager> <loadProperty> [4149] WARNING: Property jbo.maxpoolcookieageset to null
    <PropertyManager> <loadProperty> [4150] Skipping empty Property jbo.maxpoolcookieage from null
    <BindingContext> <put> [4151] BindingContext.put( AppModuleWSDataControl@edu_esade_view_DataBindings_cpx, oracle.jbo.uicli.binding.JUApplication )
    <BindingContext> <put> [4152] BindingContext.put( AppModuleWSDataControl@edu_esade_view_DataBindings_cpx, oracle.jbo.uicli.binding.JUApplication )
    <DebugDiagnostic> <print> [4153] DBG: DataControl:Looking for :_adf_dc_user_params_key_
    <DebugDiagnostic> <print> [4154] DBG: DataControl:Looking for :_adf_dc_user_params_key_
    <ADFLogger> <begin> Create nested Application Module
    I don't know if "Create nested Application Module" is important but I don't want this AppModule to be nested of the other. I want them to be completly independent in order to achieve independance of the commit actions.
    Any help ?

    "1.Defining all BTF as "No controller transaction" I can assume both AppModule will always work with different transactions "
    As long as they're defined as separate root AMs and you've used the <No Controller Transaction> option they will work with different db connections, therefore different transactions too.
    "and one transaction in one AppModule will persist trough pages"
    Within scope of one BTF yes. In scope of chained BTFs that's dependent on the BTF data control scope option. If you set that to isolated, each instance of a BTF will spawn a new instance of the AM in question (and new connections/transactions with the database). If you use shared, 1 instance of the AM will be shared (1 connection/transaction).
    "2.What impact can have this in reusing BTF ? I have a jsf page reusing the same task flow in two regions. The taskflow performs some initialization. Will the regions undesirably interact one with the other ?"
    That depends on the data control scope option as specified above. If you want them to be independent, use the isolated data control scope options on the BTF.
    Consider reading the ADF Task Flow Transaction Fundamentals paper on this website for more information: http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adfarchitect-1639592.html
    CM.

  • Using Application Module in Stateless Mode

    Hello,
    We have certain parts in our web application that is not coded using ADF-Faces, but need to use ADF-BC framework to do some data retrieving and manipulation. Our current approach is to instantiate the application module like the following:
    Configuration.createRootApplicationModule(impl, config);
    and after each usage we do:
    Configuration.releaseRootApplicationModule(am, true);
    However, the application module is not really released. We deployed pool statistic servlet from Steve Muench's "not yet documented examples" and realized that the supposed to be released application module is still in 'referenced' state and thus unavailable for usage by other session, or even other request in the same session as we dont know of anyway to tell ADFBC about current session and checkout referenced AM. As a consequence, the application is taking up DB resource so quickly and we have to restart the application every 5 minutes because it takes all available connection slot on our Oracle 10g server.
    Do I instantiate and released the application module correctly? Or am I missed something?

    In the reference you pointed, it is said that if I want the application module to be 'unmanaged' (assuming 'unmanaged' app module is what I need) I should:
    "call the resetState() method on the DCDataControl class (in the oracle.adf.model.binding package)."
    I'm not sure whether I'm getting this right, but I don't think I have a data control on the application module, because I instantiated it using Configuration.createRootApplicationModule().
    How do I set an app module to have 'unmanaged' release level directly (not through a data control)?
    Theres a resetState() in ApplicationModule class but it takes an int as an argument and Im not sure what to pass in.

  • Problem releasing the application module after upgrade to 11.1.1.2

    We have recently upgraded from JDeveloper 11.1.1.1 to 11.1.1.2.
    In the "tearDown()" method in our Unit Tests, the Application Module is realeased using:
    private ApplicationModule am;
    Configuration.releaseRootApplicationModule(am, true);
    Alter the upgrade, this produces the following error:
    oracle.jbo.JboException: JBO-33025: Failed to release application module MapServiceGlobal. Cookie handle not found.
    Please Help.
    FYI - this is the code that is used to create the application module:
    Hashtable env = new Hashtable(2);
    env.put(JboContext.INITIAL_CONTEXT_FACTORY,JboContext.JBO_CONTEXT_FACTORY);
    env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
    try
    InitialContext ic = new InitialContext(env);
    ApplicationModuleHome home = (ApplicationModuleHome)ic.lookup(rootAM);
    am = home.create();
    catch (NamingException nex)
    /* Handle the error here if you don't find it */
    throw new NamingException("Application Module naming exception " + rootAM + " : " + nex.getMessage());
    /* Connect the AM to a database connection */
    am.getTransaction().connect(jdbcConnectionURL);
    * Set the bundled exception mode so that exceptions are thrown in the
    * same way as when we're running in the web application.
    am.getTransaction().setBundledExceptionMode(true);
    Thanks,
    -Spiro

    Hi,
    I used OCEP 10.3.0.0 and upgraded the wlevs30 domain to PS6(11.1.1.7.0). and it worked without such error.
    My experience is:
    1) in OCEP 10.3.0.0 it needs not to add the security groups in atnstore.txt
    2) you need to add <scratch-directory/> for Jetty in server's config.xml otherwise you will see the visualizer takes a long time to get up on Windows
    Thanks
    Junger

  • Disconnect Application Module Upon Release and LOV NPE

    Environment
    Jdeveloper 11.1.1.4.0
    Jheadstart Release 11.1.1.4.26
    There seems to be some sort of incompatibility with some LOVs when I enable Disconnect Application Module Upon Release.
    I have an LOV based on an updatable VO with a bind parameter.
    When I first log on the application an try to use the LOV I get a NPE when I select the row from the LOV popup and press OK.
    If I navigate to another page and return the LOV starts working correctly
    The NPE occurs in line
    keyList.add(getIterBinding().getCurrentRow().getKey());
    of LovItemBean
    getIterBinding().getCurrentRow() is null it this case.
    Do you have any hints?
    public void copyReturnValues(Map selectedRowData, Row baseRow, boolean copyToUI, boolean commaSeparated)
    // first clear any dependent items, if they exist
    if (getTableBean() != null)
    List keyList = new ArrayList();
    keyList.add(getIterBinding().getCurrentRow().getKey());
    getTableBean().getTable().setRowKey(keyList);
    Edited by: spooker on May 31, 2013 9:28 AM

    I was using Disconnect Application Module Upon Release to overcome an issue I had with multiple duplicated rows being generated in a table under certain circumstances.
    What I had is a button which reads the rows of a table and creates new rows in another table (other viewobject) which have a foreign key to the rows of the first table.
    If I issue multiple requests on the first table (5rows) by clicking different rows very fast and at the same time I press the button to create new rows to the second table the results are undefined. Instead of getting 5 new rows I get 10 or even 15 or 20. I don't know if this is a bug or if I am doing something wrong but I managed to overcome this by using the Entity RowSet instead of the ViewObject RowSet.
    so now I am not using Disconnect Application Module Upon Release any more.
    Edited by: spooker on Jun 3, 2013 7:38 AM

  • Application Module Release Mode

    Hi sirs;
    I'm just starting a new struts based application and adf uix + bc4j;
    What i was wondering is;
    If we will have a improve of performance, releasing more times the application module in stateless mode; like the following;
    All data forms (form related to data) will have an <<exit>> button and all the others links should be disabled. this exit button should command the form's dataforward action to release the application module in stateless mode;
    This exit button also will redirect the user to the main menu page;
    So, when the user get in an "data form", all struts ,toy stories based actions, will have the complete life cycle and will release the application module in stateful mode.
    One event called onExit marks the release mode to stateless to it's life cycle.
    what are your opinion about this approach ?
    Thanks
    Marcos Ortega;

    Repost

  • Programmatically created ViewDefImpl and application module releasing

    Hello!
    What will happen with a programmatically created ViewDefImpl instance after module releasing (for Stateful release mode, I mean if module will do passivation)? How I see it gone away.
    As workaround I'm using a distinct module with Reserved relese mode, but it's no good.
    Don't inspect closely, but I think the error during actiovation caused by this reason:
    java.lang.NullPointerException
    at oracle.jbo.server.Serializer.activateDynamicVO(Serializer.java:425)
    at oracle.jbo.server.ApplicationModuleImpl.activateVOs(ApplicationModuleImpl.java:7145)
    at oracle.jbo.server.ApplicationModuleImpl.doActivateState(ApplicationModuleImpl.java:6962)
    at oracle.jbo.server.ApplicationModuleImpl.doActivateAMState(ApplicationModuleImpl.java:6927)
    at oracle.jbo.server.Serializer.activate(Serializer.java:272)
    at oracle.jbo.server.DBSerializer.activateRootAM(DBSerializer.java:330)
    at oracle.jbo.server.ApplicationModuleImpl.activateState(ApplicationModuleImpl.java:5519)
    at oracle.jbo.server.ApplicationPoolMessageHandler.doPoolMessage(ApplicationPoolMessageHandler.java:171)
    at oracle.jbo.server.ApplicationModuleImpl.doPoolMessage(ApplicationModuleImpl.java:7735)
    Code fragment from module for wich activation failed:
    >>>>>>>>>>>>>>>>>>>>>>>>>>>
    viewDef = new ViewDefImpl(QUERY_RESULTS_VO_DEF_NAME);
    for (...) {
    ViewDefHelper.addUpdateableTransientViewAttr(viewDef,
    attr.getFirstChild().getNodeValue(),
    String.class);
    viewDef.resolveDefObject();
    viewDef.registerDefObject();
    resultsVO = (SimpleXMLViewObjectImpl)createViewObject(QUERY_RESULTS_VO_NAME, viewDef);
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Thanks in advance.
    Ilya.

    application module1 is for table1, table4 and table5 and Application module 2 is for different tables say table2,table3 now I got 1 requirement where I need to do insertion in table1 after insertion in table2,table3 from applicaiton module2

  • NPE when releasing application module instance

    HI,
    I am hitting a NPE when I am trying to release my application module.
    My code goes like this.
    public void releaseAppModule() {
         try {
              super.releaseRootAppModule(false);
         } catch (Exception e) {
              e.printStackTrace();
    }...and the exception
    java.lang.NullPointerException
    at oracle.jbo.client.Configuration.releaseRootApplicationModule(Configuration.java:1435)Use Case:
    I am getting my data from DB.
    1. On first load, I will hit this NPE
    2. When I do refresh on the browser, I no longer am experiencing this.
    Any reason why?
    How do I troubleshoot such case?
    JDEV 11G PS3

    i think this will helps you.
    JBO-30006 / BEA-000000 in ADF BC when running production

  • Release Application Module

    Guys,
    I couldn't understand the exact difference between
    Configuration.releaseRootApplicationModule(am, true);
    and
    Configuration.releaseRootApplicationModule(am, false);
    1. True -> AM instance will be deleted???
    2. False -> AM intance will not be deleted and when i do am = Configuration.createRootApplicationModule(amDef, config) , i will get the same am instance?
    Can you guys help?

    Straight from the docs:
    releaseRootApplicationModulepublic static void releaseRootApplicationModule(ApplicationModule appModule,
    boolean remove)
    Release the specified application module.
    Parameters:
    appModule - an application module which was created with createRootApplicationModule(String, String, EnvInfoProvider)
    remove - indicates whether the application module should be removed true: remove the application module false: retain the application module for future use
    >
    BUT read this http://radio-weblogs.com/0118231/2009/08/20.html#a959 and ask yourself why using createRootApplicationModule in the first place.
    Timo

  • Disconnect Application Module Upon Release app module configuration.

    Hi,
    I read in one article that using that "*Disconnect Application Module Upon Release*" in App module configuration is strongly not recommended (http://andrejusb.blogspot.com/2010/02/optimizing-oracle-adf-application-pool.html).
    Can anyone pls let me know if there are any other problems apart from this (https://forums.oracle.com/forums/thread.jspa?messageID=9873898#9873898) LOV issue.

    Hi Frank,
    Thank you very much for your support.... very much needed.......
    I will give a outline of my app and please do tell me where you need indepth details so we can narrow down to the flaw.
    * JAVA : *1.6*
    * JEVELOPER VERSION: *11*
    * WebLogic : *11*
    * Oracle DB : *11g*
    ----------------------------------------- ORACLE DATABASE DETAILS*
    * VERSION : *11g*
    * MAX CURSORS LIMIT : *300*
    ----------------------------------------- WEBLOGIC DETAILS*
    * DATA SOURCE : XXXDS (Not jdbc url)
    * JNDI : jdbc/XXXDS
    * Connection pool details:
    - initial size : *1*
    - Max Capacity : *50000*
    - Inactive connection time out : *0*
    * Every other settings are defaults
    ----------------------------------------- AM's details*
    * My model contains : *19* App modules ( All root )
    * app module configs: (Giving only those were changed, else are defaults)
    --- Connection type : Data Source - datasource name : jdbc/XXXDS (One given in weblogic)
    --- jbo.ampool.maxinactiveage : *60000*
    --- jbo.ampool.monitorsleepinterval     : *30000*
    --- jbo.ampool.timetolive :*120000*
    --- jbo.locking.mode : optimistic
    ----------------------------------------- Overridden Methods*
    This method is called each and every time an app module since all appl modue extends this
    @Override
    protected void *prepareSession(Session session) {*
    String username = ADFContext.getCurrent().getSecurityContext().getUserName().toUpperCase();
    log.debug("Preparing session for user " + username);
    Statement st = getDBTransaction().createPreparedStatement("rollback", 0);
    try {
    if (st.getConnection() instanceof PoolConnection) {
    PoolConnection poolConnection = (PoolConnection) st.getConnection();
    OracleConnection connection = (OracleConnection) poolConnection.checkConnection();
    if (connection.isProxySession() && username.equals(connection.getProperties().get(PROXY_USER_PROPERTY))) {
    // no proxying required, we already have a connection that is proxied for this user
    super.prepareSession(session);
    return;
    clearStatementCache(poolConnection);
    if (connection.isProxySession()) {
    log.debug("Connection already proxied. Tearing down previous connection.");
    connection.close(OracleConnection.PROXY_SESSION);
    log.debug("Creating proxy connection for user " + username);
    Properties properties = new Properties();
    properties.put(PROXY_USER_PROPERTY, username);
    connection.openProxySession(OracleConnection.PROXYTYPE_USER_NAME, properties);
    clearStatementCache(poolConnection);
    validateUser(username);
    } else {
    throw new JboException("Connection was not a PoolConnection, your AppModule appears to be using JDBC URL configuration instead of a managed data source.\n Try changing the Local and Shared 'Configurations' for this application module: " + this.getDefFullName());
    } catch (SQLException e) {
    log.error("Unable to prepare session correctly, proxying failed.", e);
    } finally {
    try {
    st.close();
    } catch (SQLException e) {
    log.warn("Unable to close statement", e);
    super.prepareSession(session);
    @Override
    protected void beforeDisconnect() *{*
    Statement st = getDBTransaction().createPreparedStatement("rollback", 0);
    try {
    PoolConnection poolConnection = (PoolConnection) st.getConnection();
    clearStatementCache(poolConnection);
    } catch (SQLException e) {
    log.warn("Unable to tear down session correctly, clearing statement caches failed.", e);
    } finally {
    try {
    st.close();
    } catch (SQLException e) {
    log.warn("Unable to close statement", e);
    super.beforeDisconnect();
    ----------------------------------------- Few points about our design
    * A single page can load more than one app modules.
    * All LOV comes under a single app module.
    * We use multiple LOV in the same page.
    thank you for ur help......

  • Databse connection when an application module is checked out

    Hi,
    I have an application module pool and database connection pool,
    Documentations suggest that, when an application module is released in stateless mode irrespective of the jbo.doconnectionpooling property the connection aquired by the app module will be released.But this is not happening.What could be the reason.Is this a BUG in BC4J!!!!!!!!.
    Also whenever i check out an app module, 2 database connections are getting opened instead of one. What is the strange problem!!!!!!!.
    Can anybody guide me.
    Thanks,
    Dutt..

    BD - I have a hunch that it has more to do with cvs in a multi-user environment ... but cannot test that out right now since the multi-user component of this problem happens to be out of the office until Monday ;-) I'm thinking it's possible that, since we have slightly different paths to the residents in our workspace, we're fighting over configurations upon committing and updating.
    I'll be sure to post steps in recreating this problem very early next week.
    -Brian

  • Intermittent error in production server JBO-25200: Application module is not connected to a database.

    We've set 60 min as session timeout and AM pool parameters also high  (<AM-Pooling jbo.ampool.maxinactiveage="1200000" jbo.ampool.initpoolsize="25" jbo.ampool.maxpoolsize="1000" jbo.recyclethreshold="50" jbo.ampool.maxavailablesize="50" jbo.ampool.minavailablesize="25"/>) in our application due to requirements.  We are using jdev 11.1.1.7.0
    Intermittently The page is getting refreshed and unsaved data is lost when user leaves a page for 5 or 10 min and on return back to application and performing operations back. There is not much load also on the server. When we analyze the logs the below exception is thrown on the logs.
    Exception Class: oracle.jbo.NotConnectedException
    Message: JBO-25200: Application module is not connected to a database.
    Agent: APP_BSA_BPA[mnatest_soa2]@egw-bpm2-mnat.wfs.com:5508
    API: Exception
    Thread Name: [ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)' <562720362>
    Exception StackTrace
    Method Class Line        File Name
    handleRollback oracle.jbo.server.DefaultTxnHandlerImpl 145         <unknown>
    doRollback oracle.jbo.server.DBTransactionImpl 5174       <unknown>
    rollback oracle.jbo.server.DBTransactionImpl 2544       <unknown>
    resetState oracle.jbo.server.ApplicationModuleImpl 4860       <unknown>
    disconnect oracle.jbo.common.ampool.DefaultConnectionStrategy 343         <unknown>
    doPoolDisconnect oracle.jbo.server.ApplicationPoolMessageHandler 592         <unknown>
    doPoolMessage oracle.jbo.server.ApplicationPoolMessageHandler 430         <unknown>
    doPoolMessage oracle.jbo.server.ApplicationModuleImpl 9316       <unknown>
    sendPoolMessage oracle.jbo.common.ampool.ApplicationPoolImpl 4530       <unknown>
    prepareApplicationModule oracle.jbo.common.ampool.ApplicationPoolImpl 2460       <unknown>
    doCheckout oracle.jbo.common.ampool.ApplicationPoolImpl 2270       <unknown>
    useApplicationModule oracle.jbo.common.ampool.ApplicationPoolImpl 3169       <unknown>
    useApplicationModule oracle.jbo.common.ampool.SessionCookieImpl 592         <unknown>
    useApplicationModule oracle.jbo.http.HttpSessionCookieImpl 234         <unknown>
    useApplicationModule oracle.jbo.common.ampool.SessionCookieImpl 525         <unknown>
    useApplicationModule oracle.jbo.common.ampool.SessionCookieImpl 520         <unknown>
    initializeApplicationModule oracle.adf.model.bc4j.DCJboDataControl 523         <unknown>
    getApplicationModule oracle.adf.model.bc4j.DCJboDataControl 869         <unknown>
    internalGetBeanDataControl oracle.adf.model.bc4j.DCJboDataControl 969         <unknown>
    findOrCreateMethodRowSetIterator oracle.adf.model.bc4j.DCJboDataControl 1236       <unknown>
    initSourceRSI oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding 698         <unknown>
    callInitSourceRSI oracle.adf.model.binding.DCIteratorBinding 1679       <unknown>
    internalGetRowSetIterator oracle.adf.model.binding.DCIteratorBinding 1652       <unknown>
    refresh oracle.adf.model.binding.DCIteratorBinding 4506       <unknown>
    refreshIfNeeded oracle.adf.model.binding.DCExecutableBinding 341         <unknown>
    getRowSetIterator oracle.adf.model.binding.DCIteratorBinding 1612       <unknown>
    getViewObject oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding 473         <unknown>
    _loadCriterionList oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$AdfConjunctionCriterion 3504 <unknown>
    getCriterionList oracle.adfinternal.view.faces.model.binding.FacesCtrlSearchBinding$AdfConjunctionCriterion 3417 <unknown>
    invoke sun.reflect.GeneratedMethodAccessor4821 - <unknown>
    invoke sun.reflect.DelegatingMethodAccessorImpl       25 <unknown>
    invoke java.lang.reflect.Method 597         <unknown>
    Any idea why this exception thrown ? Is this because of weblogic server connections cleanup or something to do with connections?  As per my understanding , JDBC connection will not be released when AM is active/managed mode.  Oracle Doc says
    " That application module instance holds onto the JDBC connection object that it acquired from the pool until the application module instance is removed from the application module pool."

    jbo.ampool.maxinactiveage is set to 20 min which means that If AM in the pool is inactive for 20 min then clean this AM in the next cycle (still that is not our case).  We also set jbo.recyclethreshold="50" means 50 AMs can exists in the pool with managed-state. We set these because of performance reasons.  As per my understanding, AM instance will be deleted (????) but in any action on the UI will pick up another instance of the AM because datacontrolframe is still valid in the session.  Do we have any best practice like jbo.ampool.maxinactiveage should be equal to session time out?. The error seems AM lost the underlying JDBC connection and somehow application is using that stale AM ?. what will be possible reason?.

  • Nested Application Module

    I have this problem, and I wish I can find a solution.
    I have two application module, am1 and am2, am2 is nested in am1, and I'm using <jbo:ApplicationModule> tag to open a connection for the application module.
    I have this case, I want to access page that insert into a table but this insertion should not be committed until another operation is committed, and these two operation occurred on two different views in the 2 application module, so I want to know how can I get the application module am2 using <jbo:ApplicationModule> tag, and making it using the transaction context of application module am1.

    Omar,
    there is a getRootApplicationModule()method on the ApplicationModuleImpl class, did you try this ?
    Frank

  • Application Module holds the DB Connection till we commit?

    Hi All,
    Jdeveloper :- 11.1.1.5
    As in my business scenario ,i have an EO and VO and there AM.In VO we have a bind variable which is nothing but the task Id.On Page Load i pass the bind variable to the VO and fetch the data onto the page.As user update the data onto the page and then when he press submit, we actually calls the stored procedure which finally updates the data in the table for the same task id.
    But the problem is , when i am fetching the data from the table using AM,it actually creates a connection with the database but it doesn't release the connection.
    Is there any way where we fetch the data from the table using AM and then close or release the connection so that while submitting tha data to the table using stored proc will not get the locked row.
    Please suggest!!!

    Have you set up the application module to use optimistic locking?
    This mode should hole the lock only during update of the row.
    I don't think the problem is tied to the connection pool. An application module holds on to the jdbc connection until it gets released from the application module pool. This only happens is a application module is not used for a configurable idle time (one of the pooling parameters). If you app releases an application module the module is put back into the application module pool for resuse and holds the connection.
    Timo

  • Multiple Application Modules

    I'm currently working on a BC4J/Struts project that requires accessing multiple disparate databases.
    I've setup 2 separate BC4J projects, one is the primary project that the Struts project uses as it's application module (Stateful). The secondary BC4J project is accessing a different database (Stateless).
    I've created methods in the primary application module to access the secondary application module. I'm currently using the Configuration.createRootApplicationModule() method create an instance of the secondary application module within the primary application module.
    Is there anything wrong with this approach?
    How have others achieved this?
    Thank you.

    Hi,
    Configuration.createRootApplicationModule will use the ApplicationPool (caching mechanism). This is intended for programmatic use and is okay to use when accessing a different root AM from within another AM. Please note that this will set up a different transaction context in the second AM that will not be nested within the first (i.e. the framework will not commit the second when commiting the first). If this is not the desired architecture then you should nest the second AM rather than using a programmatic approach.
    You should always release the second AM when done. Best practice recommends that the createRootApplciationModule...releaseRootApplicationModule pair are performed in a try...finally block. If you release with the remove parameter=false -- will release the AM to the pool for reuse.
    Hope this helps,
    JR

Maybe you are looking for

  • Process Chain Help - Delete Overlapping requests

    Dear Experts, I have a requitement where I want to delete the ' previous days' request from the cube. This has to be from the data coming from only one DSO. I can use the Delete overlapping request process type but I want to know how. And again, this

  • Google API Keys for GCM in Chromium looks like dont work

    I am trying to use the service of Push Messaging function of Chrome(Chromium), theoretically I have to get a ChannelId where the communication would be established between the browser and Google Cloud Messaging(GCM), in Chrome I can get that Channel

  • Need a license for CS4 ME

    Hi all, I want to buy license for adobe CS4 ME software but I cant find any seller/store that will sell me license. Is it possible that once the CS5 is out no one will sell CS4? and also, will a CS4 license key work with a CS4 ME software? Thanks in

  • Email video clip to PC w/o Quicktime

    I have to email a 2 minute video clip to a PC that does not have Quicktime installed. Is there a fast, easy way to do this. Thank you, Steven

  • JMF capture of Firewire on Laptop?

    Hey guys! I am working on a medical imaging science fair project for school. I am using JMF to capture the images from the microscope's CCD camera. Right now I am using an ATI TV Wonder USB and it only captures at 320x 240 which does not produce enou