Application module pool

does anyone have any good links or docs to get a better understanding of how Application Module Pool works in Ebusiness 11i. For example profile option FND:AM Pool set to enabled , what does it actually do?
thanks.
Raj

If you have a app module running on that server, then you can find a link in the middle page, it is a table. Click the link in the table, then you can find more.

Similar Messages

  • How to configure Application module pooling?

    I want to know wheather bc4j container itself manages Application module pooling if yes then please tell me is there any file to set parameters for congiguration like one which we have for apache web server.
    If no then please let me know how to create applicatiom module pooling.
    Thanks in advance.

    Application module pooling is configurable through an application module configuration. In order to edit an application module configuration you may right click an application module and select Configurations...
    The BC4J data web beans and the BC4J JSP datatags are both application pool clients. The BC4J documentation includes descriptions of the application pool properties. The documentation also includes a code sample which illustrates how to write your own pool client.

  • Table QBE-Filter BUG in combination with Application Module Pooling ?

    Hi,
    i use JDEVADF_11.1.1.1.0_GENERIC_090615.0017.5407, Java 1.6.0_14, ADF BC and ADF Faces.
    I have one View Object, one Page with a panelCollection and a table with option filtering (create via drag-and-drop from datacontrol).
    When I disable the application module pooling on the AM configuration and run the application, i can execute the query-by-example filter, but when I delete the filterCriteria and press enter (requerry for select all) the table shows the old data.
    Image for setting on application module:
    http://img265.imageshack.us/img265/1374/filterdoesnotwork1.png
    Image for execute querry and requerry for "all rows" (deleted filterCriteria)
    http://img140.imageshack.us/img140/1963/filterdoesnotwork2.png
    When I enable application module pooling all works fine. Is this a issue?
    kind regards

    Hi Frank,
    if I filter for employees which firstname starts with "D" and then for employees with "F" --> i see "No data to display.".
    So uncheck "Enable Application Module Pooling" on application module doesn't work with QBE-Filter ?
    I can send a testcase but it is so simple you can create it with jdeveloper in 2 minutes ;)
    Martin

  • Guidelines for setting Application Module Pool Size Parameters?

    Are there guidelines for setting the application module pool size parameters, such as initial pool size, maximum pool size, etc., based on the expected number of users or other factors? I've read the developer guide sections (ch 28-29), but still don't have a good feel for how to correctly set the optimal values for the pool configuration parameters? Even more importanty, how do I monitor the pool's efficiency during runtime to determine if the pooling parameters are configured correctly?
    This will be critical to performance and scalability, so I'm looking for a way to get some visibility into how the pooling is working during production operation to assess whether there are bottlenecks/constraints/ineffeciencies?
    Note I am using Tomcat as the java runtime container; ADF BC / JSF jdev 10.1.3.1
    Thanks in advance and Merry Christmas!

    KUBA - were you able to resolve these issues and if so are there any lessons learned you can share?
    I'm hoping someone from the ADF team can answer our original question including guidelines for setting pool parameters and how to monitor the pool's performance while running in production.
    thanks

  • BC4J Application Module Pooling for JClient App

    Helo,
    i wonder why all documentation about bc4j application module pooling available is for Web app ? (jsp) . I'm creating swing JClient app and i need some doc about how the application module pooling works in this kind of application.
    anybody know where can i get those docs ?
    Need help and Thank you,
    Ricky H.P.

    Connection pooling can be achieved when a JVM instance manages the pool, in 3tiers the Java App. Server has that task.
    If you are 2tiers that means that you are communicating with the database through JDBC.
    When a user launches your JClient app in fact he lauches his own JVM instance so I don't how he could share a pool with other users.
    In your case you have at most 2 open transactions per user.
    You can achieve that by sharing a same binding context with n forms composed of m panels.
    Let's say:
    1 main form
    connection 1: forms a,b,c
    connection 2: forms x,y,z
    In your main form your open your 2 connections and share them.
    You can achieve that by:
    1) in our main form, initialize 2 binding containers
    Example of one:
    DCBindingContainer bc1 = this.createBindingContainer("package name","model name");
    private DCBindingContainer createBindingContainer(String packageName, String panelModelName)
    StringBuffer sb = new StringBuffer(packageName);
    sb.append(ViewConstants.STRING_DOT);
    sb.append(panelModelName);
    DCBindingContainerDef bcdef = DCBindingContainerDef.findDefObject(sb.toString()); //NOTE THE NAME.
    if (bcdef == null)
    throw new JboException("System error, "+getClass().getName()+".createBindingContainer, DCBindingContainerDef: "+sb.toString()+" not found");
    DCBindingContainer bc = bcdef.createBindingContainer(panelBinding.getBindingContext());
    bc.setName(panelModelName);
    panelBinding.getBindingContext().put(panelModelName, bc);
    return bc;
    2) Before that the jbInit method gets called in the called form, set the binding context:
    form1 = new Form1(...);
    form1.setBindingContainer(bc1) ;
    Example of methods in form 1 and form 2:
    public void setBindingContainer(DCBindingContainer ctr)
    this.panelBinding = (JUPanelBinding)ctr;
    setBindingContext(ctr.getBindingContext());
    public void setBindingContext(BindingContext bindCtx)
    if (panelBinding.getPanel() == null)
    panelBinding = panelBinding.setup(bindCtx, this);
    registerProjectGlobalVariables(bindCtx);
    panelBinding.refreshControl();
    try
    System.out.println("Form setBindingContext calling jbInit");
    jbInit();
    panelBinding.refreshControl();
    // FL added
    isBindingContextSet = true;
    System.out.println("Form isBindingContextSet true");
    catch(Exception ex)
    System.out.println("Form setBindingContext exception caught");
    panelBinding.reportException(ex);
    Regards
    Fred

  • Use of application module pool and ADF Busines Components

    Hi to all;
    Lets suppose an web application with about 10 CRUD forms and 15 to 20 reports or forms just to query and show data;
    That's clear to me, all the advantages of using App modules pool.
    But for that reports ..... Just an Read only and Forward Only data ?
    I was wondering, if it will be more effective and lightweight if we just take an JNDI JDBC connection query data and show it.
    This imaginary application will make use of application module pool to provide that 10 CRUD web forms and in other hand, will have for reports,JNDI data sources;
    What are your opinion about having this two architectural approach working together in one application ?
    Very thanks;
    Marcos Ortega
    Brazil;

    Hi Deepak;
    BC4J in my opinion is great and i am proud to share this opinion with all of you;
    As a meter of fact, i post this thread to help me better understand BC4J architecture.
    I think that my doubt main point is ...
    Are application modules pool's life cycle an extra work , when the job is just to read and show data ?
    Perhaps, an document about statefull and/or stateless application service release, help me;
    IMHO;
    cached data most of the time must to be discarted for reports, always we want to query database directly, View's object ClearCache() method would be called to reports.
    I think that it's different, when we are talking about sequent requests when we need to span the session, views and entities states.
    Forwards Thanks;

  • Problems with the Application Module Pool

    Hello,
    We have an Oracle ADF Application working in a production enviroment. The application module pool seems to work properly during the first days, but after a few days, the application module pool seems not to work properly. We start to get some errors like JBO-30003: the application pool failed to checkout an application module.
    We have included in the application a DumpPoolStatistics servlet, and what we have observed is:
    1. When the application is restarted in the server, the "total number of application modules in the pool" is equal to "maximum number of application modules in the pool".
    2. Several days after, the "total number of application modules in the pool" starts to decrease.
    We don't know why the "total number of application modules in the pool" starts to decrease, but we think this is the reason of the errors. In fact, "total number of application modules in the pool" is lower than the "jbo.ampool.minavailablesize" parameter value.
    The management of the application module pool is not a task of the developer, so we don't undestand where is the problem.
    We have configured the application module with the next parameters:
    <jbo.ampool.initpoolsize>10</jbo.ampool.initpoolsize>
    <jbo.ampool.maxpoolsize>100</jbo.ampool.maxpoolsize>
    <jbo.ampool.minavailablesize>10</jbo.ampool.minavailablesize>
    <jbo.recyclethreshold>15</jbo.recyclethreshold>
    <jbo.ampool.maxinactiveage>600000</jbo.ampool.minavailablesize>
    <jbo.ampool.monitorsleepinterval>600000</jbo.ampool.monitorsleepinterval>
    <jbo.initpoolsize>15</jbo.initpoolsize>
    <jbo.maxpoolsize>30</jbo.maxpoolsize>
    <jbo.poolminavailablesize>15</jbo.poolminavailablesize>
    <jbo.poolmaxavailablesize>25</jbo.poolmaxavailablesize>
    <jbo.poolmonitorsleepinterval>30000</jbo.poolmonitorsleepinterval>
    <jbo.poolmaxinactiveage>30000</jbo.poolmaxinactiveage>
    <jbo.dofailover>true</jbo.dofailover>
    <jbo.ampool.resetnontransactionalstate>true</jbo.ampool.resetnontransactionalstate>
    <jbo.ampool.doampooling>true</jbo.ampool.doampooling>
    We are working with JDeveloper 10.1.3.4.
    Thanks in advance!

    Sorry, you are right, the number of application modules created whe the application starts is given by the jbo.ampool.initpoolsize. But what it is sure is that the "total number of application modules in the pool" starts to decrease. The number of days is not always the same. But we have to restart the application occasionally.
    I think the time parameters are ok, I would like for example 10 minutes for pool resoruce cleanup, and 10 minutes for considering an inactive AM instance in the pool as a candidate for removal during the next resource cleanup.
    <jbo.ampool.monitorsleepinterval>600000</jbo.ampool.monitorsleepinterval> --> 10 minutes
    <jbo.ampool.maxinactiveage>600000</jbo.ampool.minavailablesize> --> 10 minutes
    Is this right?

  • Monitor  Application Module Pool

    Hi i am tunning my ADF app parameters, how can i monitor my Application Module Pool (Like live instances and so on) so i can make adjustments on its values?

    See example #83 on my blog:
    http://radio.weblogs.com/0118231/stories/2004/09/23/notYetDocumentedAdfSampleApplications.html

  • Application Module Pool  Concept

    Hi,
    Can some one please explain what is use of Application Module Pool ,
    I read some notes on MOS, but i was unable to understand.
    'FND: Application Module Pool Enabled'
    -Thanks
    Vijay

    I'm not sure what MOS notes you are referring to but I believe it's explained in the following docs.
    Oracle Application Framework Profile Options Release 12.1.3 (Doc ID 1107970.1)
    Explaining Application Module and JDBC Pooling in OA Framework (Doc ID 759275.1)
    Health Check Alert: Set the profile 'FND: Application Module Pool Enabled' to Yes (Doc ID 957532.1)
    Thanks,
    Hussein

  • Application Module Pooling

    Hopefully someone will be able to help us with this CRITICAL issue we've encountered since moving our application from 9.0.3 to 9.0.4.
    Our application has over 140 application modules and relies on the BC4J framework.
    Under 9.0.3 we used JDBC connection pooling to control the number of database connections, but since going to 9.0.4 we use application module pooling.
    Our settings for application module pooling are currently:
    jbo.ampool.doampooling=true
    oc4j.userThreads=true
    jbo.ampool.initpoolsize=0
    jbo.ampool.maxpoolsize=15
    jbo.recyclethreshold=7
    jbo.ampool.maxavailablesize=7
    jbo.ampool.minavailablesize=0
    The rest are set to their default values.
    We only have 75 or so users on the system at a time (load balanced between 2 servers) and within a matter of hours the application crawls to a halt and dies.
    What we are seeing is that while the app modules might release, they do not release their database connection, thus they cripple the database as well as the application servers.
    The only way out of this situation is to bounce the oc4j instance on the app servers and "start over"....
    I guess what my question is, are those app module pooling settings totally wacky and are there some other settings that I am missing?
    Tried going back to using JDBC connection pooling but that breaks the application (guess something changed with 9.0.4).
    The application servers themselves are fairly beefy, 4GB of RAM and 2 procs, I would hope they would be able to handle a scant 40 users each...

    does anyone have any ideas on this??

  • About application module pooling

    Hi all,
    I'm developing an application with JDev9i and I' trying to enable am pooling. I setup the jbo.recycletreshold=0 property and I put a log statement in the constructor of my Entity Object.
    I execute a query and display its result (in a paged form 10 by 10) in a jsp.
    every time I call the jsp (even when I click on the next page) I see the creation of all the entity objects. I logged applicationmodule.hashCode() and it's always the same.
    Which steps should I follow to enable am pooling with entity object pooling? I'm trying to read the pdf docs but I still haven't found what I'm looking for. Can anyone explain me what I'm doing wrong and where to find the documentation I need?
    Thanks,
    Giovanni

    Hi,
    The issue is that changing where clause parameters does not itself cause a ViewObject to re-execute its query. So,
    analyzing your code sample above:
    ApplicationModule am = cookie.useApplicationModule(true);
    Acquire an ApplicationModule instance for the session.
    ViewObject vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(1160)});
    // tag0
    Find the target ViewObject and set its where clause. Do not execute the query. VO State:
    Not executed
    RowSet for ID_DOC 1160 is not fetched
    Not iterated
    RangeSize = default
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    int firstIndex=0;
    int maxSize=vo.getRowCount();
    Acquire the VO's rowCount. This will force the VO to execute itself if it has not already been executed. If the VO has
    already been executed then this will not force the VO to re-execute itself. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Not iterated
    RangeSize = default
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    int rangeSize=1;
    vo.setRangeStart(0);
    vo.setRangeSize(rangeSize);
    Row[] rows=vo.getAllRowsInRange();
    Row row = rows[0];
    Setup the VO range size. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    if (row != null)
    System.out.println("IdDoc: " + row.getAttribute("IdDoc"));
    // release the application module statefully
    cookie.releaseApplicationModule(true, true);
    Release the ApplicationModule statefully. Note here that the rangeSize, the whereClause, the whereClause parameters,
    the current row, and the ViewObject's row cache will all be maintained by the ApplicationPool. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    // acquire an application module instance. use the same cookie.
    // this is equivalent to a second HTTP request originating from the same
    // session which released the cookie statefully.
    am = cookie.useApplicationModule(true);
    At this point, assuming that the AM was not recycled for use by another session (true for this SimpleTest), the same
    AM instance that was released will be returned. VO state (same as upon release):
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(1159)});
    // tag1
    Set the VO where clause. This is where the issue occurs. As mentioned above modifying the where clause
    parameters do not force the VO query to be re-executed. So, the VO remains in an executed, iterated state with a
    row cache corresponding to ID_DOC 1159. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1159
    //vo.executeQuery();
    //row = vo.first();
    vo.setRangeStart(0);
    vo.setRangeSize(rangeSize);
    rows=vo.getAllRowsInRange();
    row = rows[0];
    // tag2
    Setup and populate the range. If the VO is already in an executed state then all of these operations will be performed
    against the cached RowSet (again, ID_DOC 1159). So, these will not force the VO to re-execute itself. VO State:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1159
    if (row != null)
    System.out.println("IdDoc: " + row.getAttribute("IdDoc"));
    // release the application module statefully
    cookie.releaseApplicationModule(true, true);
    It sounds as if you would like the VO to be re-execute itself at :tag1above, placing it in the following state at :tag2:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    The most efficient way to achieve this is to force a query re-execution when the where clause parameters change.
    For example execute the following at tag0 (I assume this is the portion that simulates the servlet (model/controller) logic
    and/or at tag1 (I assume that this is the portion that simulates the JSP (view) logic which I also assume would not
    normally be responsible for setting the where clause parameter and modifying the range, correct?).
    Object[] oldWhereClauseParams = vo.getWhereClauseParams();
    // this block was copied from above tag0
    ViewObject vo = am.findViewObject("DoctorView");
    vo.setWhereClause("ID_DOC = :1");
    vo.setWhereClauseParams(new Object[]{new oracle.jbo.domain.Number(<new where clause parameter>)});
    Object[] newWhereClauseParams = vo.getWhereClauseParams();
    boolean whereClauseParamsSame =
    (newWhereClauseParams.length == oldWhereClauseParams.length);
    if (whereClauseParamsSame)
    for (int i=0; i < newWhereClauseParams.length; i++)
    if (!oldWhereClauseParams.equals(newWhereClauseParams[i]))
    whereClauseParamsSame = false;
    break;
    // force a query re-execution if the where clause paramters have changed.
    if (!whereClauseParamsSame)
    vo.executeQuery();
    which would yield the following VO state at tag2:
    Executed
    RowSet for ID_DOC 1160 is fully fetched
    Iterated to rowIndex 0
    RangeSize = 1
    User defined where clause = "ID_DOC = :1"
    Where clause parameter 0 = 1160
    Hope this helps.
    JR

  • Dynamic VO error while testing without Application Module Pooling

    Hi,
    I am using ADF11g 11.1.1.4
    I have a dynamic VO which is used to display data depending on user defined configuration .
    It works fine till I try to test the application for activation / passivation by disabling application Module
    The moment I do this the application starts throwing ArrayIndexOutOfBound exception with the following trace.
    oracle.jbo.JboException: JBO-29000: Uventet undtagelse fundet: java.lang.ArrayIndexOutOfBoundsException, msg=0
    at oracle.jbo.server.Serializer.passivate(Serializer.java:234)
    at oracle.jbo.server.DBSerializer.passivateRootAM(DBSerializer.java:290)
    at oracle.jbo.server.DBSerializer.passivateRootAM(DBSerializer.java:267)
    at oracle.jbo.server.ApplicationModuleImpl.passivateStateInternal(ApplicationModuleImpl.java:5913)
    at oracle.jbo.server.ApplicationModuleImpl.passivateState(ApplicationModuleImpl.java:5783)
    at oracle.jbo.server.ApplicationPoolMessageHandler.doPoolMessage(ApplicationPoolMessageHandler.java:381)
    at oracle.jbo.server.ApplicationModuleImpl.doPoolMessage(ApplicationModuleImpl.java:8933)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.sendPoolMessage(ApplicationPoolImpl.java:4496)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.doManagedCheckin(ApplicationPoolImpl.java:2742)
    at oracle.jbo.common.ampool.ApplicationPoolImpl.releaseApplicationModule(ApplicationPoolImpl.java:1554)
    at oracle.jbo.common.ampool.SessionCookieImpl.releaseApplicationModule(SessionCookieImpl.java:729)
    at oracle.jbo.common.ampool.SessionCookieImpl.releaseApplicationModule(SessionCookieImpl.java:649)
    at oracle.adf.model.bc4j.DCJboDataControl.releaseApplicationModule(DCJboDataControl.java:2437)
    at oracle.adf.model.bc4j.DCJboDataControl.endRequest(DCJboDataControl.java:2130)
    at oracle.adf.model.dcframe.DataControlFrameImpl.endRequestInternal(DataControlFrameImpl.java:579)
    at oracle.adf.model.dcframe.DataControlFrameImpl.endRequest(DataControlFrameImpl.java:457)
    at oracle.adf.model.BindingContext.endRequest(BindingContext.java:1955)
    at oracle.adf.model.BindingRequestHandler.invokeEndRequest(BindingRequestHandler.java:406)
    at oracle.adf.model.BindingRequestHandler.endRequest(BindingRequestHandler.java:302)
    at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:210)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
    at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
    at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
    at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:175)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at oracle.jbo.server.ViewRowStorage.getAttributeInternal(ViewRowStorage.java:1669)
    at oracle.jbo.server.ViewRowImpl.getAttributeValue(ViewRowImpl.java:1891)
    at oracle.jbo.server.ViewRowImpl.getAttributeInternal(ViewRowImpl.java:834)
    at oracle.jbo.server.ViewRowImpl.getKey(ViewRowImpl.java:645)
    at oracle.jbo.server.ViewObjectImpl.doPassivateSettings(ViewObjectImpl.java:19423)
    at oracle.jbo.server.ViewObjectImpl.doPassivateSettings(ViewObjectImpl.java:19127)
    at oracle.jbo.server.ApplicationModuleImpl.passivateVOs(ApplicationModuleImpl.java:7712)
    at oracle.jbo.server.ApplicationModuleImpl.doPassivateState(ApplicationModuleImpl.java:7522)
    at oracle.jbo.server.ApplicationModuleImpl.doPassivateAMState(ApplicationModuleImpl.java:7509)
    at oracle.jbo.server.Serializer.passivate(Serializer.java:213)
    ... 51 more
    Edited by: user3067156 on 2012-04-07 15:53

    Hi Frank,
    The view object is an Entity based view object with a very simple where clause
    We have a train flow and each stop is a jsf page which renders the dynamic VO
    Each pages have a simple iterator for View object related to the stop to create a form iterating over the View object attributes.
    We tried to investigate the problem by making a train for two stops with two dynamic VO, one on each stop , this was done as a train which had only one stop as dymanic VO worked fine.
    We found the problem to be that when passivation was being called on change of train stop1 to train stop 2,
    Application module was passivting all the view objects and it was trying to find attributes of view object2 , which is attached to train stop 2, while being at train stop 1 and it was not able to find the attribute definition on train stop 1.
    Strangely it was able to find the view object 2 definition but not the attributes of the view object 2, even when there was no binding in the page def for the view object Iterator 2.
    To solve , We created a iterators for view objects on both the pages and rendered the one not related to the stop be false and It then solved the problem
    But I am not very comfortable with the solution as I am not very sure how does an Iterator binding on the jsff page , set to rendered false help in passivation.

  • 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?.

  • Best Practice to use a single root Application Module?

    I was reading in another thread that it may be a good idea to have all application modules nested within a single root application module (AM) so that there is only 1 session maintained for the root AM, versus an individual session for each AM. Is this a best practice? If yes, should the root AM be a skeleton AM (minimal customer service methods), or, should you select the most heavily used AM and nest the other AM's underneath of it?
    In my case, I currenlty have 2 AM's (and will have 3 AM's in the future) each representing a different set of use cases withn the application (i.e., one supports users searches / shopping cart-like functionality, and the second supports an enrollment process.) It could be the case that a user only accesses pages on the web site to do searches (first AM), or only to do enrollment (2nd AM), or, they may access pages of the site that access both AM's. Right now I have 2 separate AM's that are not nested. Should I nest the AM's and define a root AM?
    thanks

    Hi javaX
    The main physical effect of having 2 separate AMs is that they have their own transactions with the database, and presumably sit in the application module pool as their own instances consuming connections from the connection pool. Alternatively a single root AM with 2 nested AMs share a single transaction through the root AM; only the root AM controls the transaction in this scenario.
    As such it's a question of do you need separate transactions or will one suffice?
    How you group your EOs/VOs etc within the AMs is up to you, but usually falls into logical groups such as you have done. If a single transaction is fine, instead of creating multiple AMs, you could instead just create logical package structures instead. Neither method is right or wrong, they're just different ways of structuring your application.
    When you create a nested AM structure, within your ViewController project in the Data Control Palette you'll actually see 3 data controls mapped to each AM. In addition expanding the root AM data control, you'll see the nested AMs again. Create a dummy project with a nested AM structure and you'll see what I mean.
    If you base your page definitions on anything from the root AM and it's children in the Data Control Palette, this will work on the root AM's transaction.
    If you base your page definitions on something from one of the other AM data controls that isn't inside the main root AM in the Data Control Palette, instead of using the root AM's transaction, the separate child AM will be treated as root AM and will have its own transaction.
    The thing to care of when developing web pages is to consistently use the AM and it's nested AMs, or the child AMs directly with their separate transactions, otherwise it might cause a bit of a nightmare debugging situation later on when the same application is locking and blocking on the same records from 2 separate AM transactions.
    Hope this helps.
    CM.

  • JAAS Authorization - Application Module

    I created a project based on the BC4J technology. The application module is configured for using the security : jbo.security.enforce=Must. This application module is also configured to deploy the user/password.
    When I used this application through a web application, I don't meet any problem.
    If I create a POJO class in the same project as BC4J in which I instantiate an instance in the application module pool, I receive the following message :
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.JboException, msg=JBO-33021: Failed authenticate user null.
    The java class in charge of instantiating the application module pool and get an instance of it works without any problem as soon as the security is not implemented.
    Hereafter you can find the method used :
    public ApplicationModule getApplicationModule()
    try{
    PoolMgr poolMgr = PoolMgr.getInstance();
    this.lg_ApplPool = poolMgr.findPool( this.lg_configPackage + "." + this.lg_configName, // name of the pool
    this.lg_configPackage, // name of the package
    this.lg_configName, // name of the configuration
    null);
    // SessionCookie Creation
    String timeStamp = (new java.util.Date()).toString();
    // for web application, replace timeStamp by ip address of the client
    this.lg_Cookie = lg_ApplPool.createSessionCookie(this.lg_applicationId,timeStamp,null);
    CordaEnvInfoProvider lEnvInfoProvider = new CordaEnvInfoProvider ("xxx","xxx");
    // this.lg_Cookie = lg_ApplPool.createSessionCookie(this.lg_applicationId,timeStamp,null);
    this.lg_Cookie.setEnvInfoProvider(lEnvInfoProvider);
    ApplicationModule lAM = this.lg_Cookie.useApplicationModule();
    return lAM;
    catch(Exception e)
    System.out.println("_CrdAppModulePoolMgr - exception : " + e.getMessage());
    e.printStackTrace();
    return null;
    After Having search quite a long time to find a solution, I have no more idea. The only thing I see now is to forget about Jaas if the application module has not to be used by a Java client not being a JClient (Swing) or a Web application.
    Could you let me know if
    1. jaas works with java client not being Swing or web application
    2. if so, could you give me more information about how to work with BC4J application module and security enforce to Must ?
    N.B.
    POJO Client :
    public class TestAppModulePoolMgr
    private ApplicationModule lg_Am = null;
    private CrdAppModulePoolMgr  lgCrdAppModulePoolMgr = null;
    private ApplicationPool lg_ApplPool = null;
    private SessionCookie lg_Cookie = null;
    public TestAppModulePoolMgr()
    this.lg_CrdAppModulePoolMgr = _CrdAppModulePoolMgr.getCrdAppModulePoolMgr();
    this.lg_CrdAppModulePoolMgr.setApplicationId("CrdGenerationAppModuleId");
    this.lg_CrdAppModulePoolMgr.setConfigName("_CrdGenerationAppModuleLocal");
    this.lg_CrdAppModulePoolMgr.setConfigPackage("CORDA_BSV");
    this.lg_Am = lg_CrdAppModulePoolMgr.getApplicationModule();
    this.lg_ApplPool = lg_CrdAppModulePoolMgr.getApplicationPool();
    this.lg_Cookie = lg_CrdAppModulePoolMgr.getApplicationSessionCookie();
    * @param args
    public static void main(String[] args)
    TestAppModulePoolMgr testAppModulePoolMgr = new TestAppModulePoolMgr();
    }

    Thank you.
    I use SSO authentication to test my application so have no users defined.
    Can I use the test-all user? If so, what is the password?

Maybe you are looking for