Reset concrete Application Modules State for a concrete HttpSession

Hi,
I would like to know, if there's a way to see if a user have instantiated/created a SessionCookie for a concrete ApplicationModule.
I'll need to reset states/release concrete ApplicationModules list of a user in a concrete moment (not all), but without knowing what of these AM on list were used or not by the user already. I suppose that if I can get the user used sessioncookies I'll be able to get all the AM used by the user and I could release all them state and ViewObjects/EntityObjects caches.
There is a rational way to do this? Or maybe I would track on my own all the SessionCookies created for this user session (I've my own custom SessionCookieFactory)? Or exists any other way to do this?
A note, I'm not interested on reseting all user used ApplicationModules State, only some of them, without invalidate the user HttpSession.
Thanks in advanced.

repost

Similar Messages

  • BUG?  Application Module State Management

    I have 2 read-only view objects VO1 & VO2 with a View Link that links them by a primary key field. VO1 (master) is on the first .jspx page and VO2 (detail) is on the 2nd .jspx page. VO1 has a SQL query, but is populated programmatically in an App Module Service method that sets the where clause parameters. VO2 is on a separate .jspx page. VO2 has one bind variable in its SQL query that is populated when the user clicks a commandLink on a row within VO1 - this takes the user to the 2nd .jspx page to view VO2 table results.
    The issue is that when the user navigates back to the first .jspx page containing VO1, a duplicate row is added to the end the data table (or as the first record on the second page of results if there are multiple pages.) If I re-query VO1, re-sort the data using the column headings, or passivate the data (see below), the duplicate row goes away. Note I have tried using the same iterator on both pages and this same issue occurs.
    Ok - after 5 days of troubleshooting, here is the potential bug. If Application Pooling is enabled on the Application Module, I experience the issue above. If I don't enale Application Pooling, and Passivate state for the App Module, this issue does not occur (see below):
    Application Module Settings - Error Occurs if Pooling is enabled
    (unchecked) Failover Transaction State Upon Managed Release
    (unchecked) Disconnect Application Module Upon Release
    (checked) Support Dynamic JDBC Credentials
    (checked) Reset Non-Transcational State Upon Unmanaged Release
    (checked) Enable Application Module Pooing
    If I un-check Enable Application Module Pooling the error does NOT occur. Note I've experimented with many combinations, and its only the Application Module Pooling that affects the behavior.
    Note both view objects are set to Passivate state (but not for transient values, though tested passivating those as well and there was no difference.)
    Can someone please advise? This is a showstopper for implementing our application to production. See the threads below for more information. Finally note that I have not yet been able to replicate this in a simple test case, but there is some specific characteristics about my current application causing this behavior (and it appears others have experienced as well.)
    Duplicate rows displayed in list
    Need help  - Duplicate Rows being added to View Object?
    Thanks.
    Here is the code on the AM service method to populate the rows for VO1 (no insert or create rows - only executing the query):
    ViewObject vo1 = findViewObject("VO1");
    vo1.setMaxFetchSize(250); // set max fetch size 250
    vo1.setWhereClauseParam(0, x0);
    vo1.setWhereClauseParam(1, x1);
    vo1.setWhereClauseParam(2, x2);
    vo1.setWhereClauseParam(3, x3);
    vo1.setWhereClauseParam(4, x4);
    vo1.setWhereClauseParam(5, x5);
    vo1.setWhereClauseParam(6, x6);
    vo1.setWhereClauseParam(7, x7);
    vo1.setWhereClauseParam(8, x8);
    vo1.setWhereClauseParam(9, x9);
    vo1.setWhereClauseParam(10, x10);
    vo1.executeQuery();
    Message was edited by:
    javaX

    More information on this issue:
    After further testing, I discovered that the 'Disconnect Application Module Upon Release' also plays a factor with this issue.
    If 'Enable Application Module Pooling' is unchecked the issue does not occur because the view object is passivated.
    If 'Enable Application Module Pooling' is checked (jbo.ampool.doampooling=true), then the issue occurs UNLESS I also set 'Disconnect Application Module Upon Release' (jbo.doconnnectionpooling=true). If I set the latter to true, then I do not experience the duplicate row issue. I would rather not have to enable jbo.doconnectionpooling=true because of the performance impacts as recommended in the dev guide. Any Suggestions?
    -- updated on 10/1/06 ----
    Setting jbo.doconnectionpooling=true only fixes this issue when I use a ViewLink as the mechanism to pass the row Id from VO1 (master on .jspx page #1) to VO2 (detail on page #2.) If I use an actionListener to pass the value from page #1 to page #2, setting jbo.doconnectionpooling=true does not fix the issue.
    <af:commandLink actionListener="#{bindings.setCurrentRowWithKey.execute}"
    action="page2" text="#{row.Name}">
    <af:setActionListener from="#{row.Id}" to="#{backing_bean_page2.rowid}"/>
    </af:commandLink>
    Message was edited by:
    javaX

  • 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

  • Application module creation for (web) services

    Hello,
    We are running into stack overflows from ADF BC (BC4J) with oracle.jbo.client.Configuration.createRootApplicationModule. We want to make sure we're doing this right.
    If you have data bound services (e.g. product lookup) and you don't want to put your operation/exposed method in the application module Impl class for clear seperation (unlike ADF toy store sample), is it appropriate to:
    1. Create a Java service class that you will expose as J2EE web service
    2. The method to be exposed will call Configuration.createRootApplicationModule to checkout an app module from pool.
    3. Find the view object, run the query, get the row.
    4. Configuration.releaseRootApplicationModule to check it back in.
    Please share your best practices and recommended approach with us.
    Thanks,
    - Zak

    I'd recommend using our built-in feature for exposing an application module class as a J2EE web service. This will code-generate a class for you that does the AM access correctly.

  • How application module helps for performance improve

    Hi Everyone,
    I have a sample web-application in which I am connecting with single AM instance (AM for database view object), retrieving some information and then close the connection. I am doing this as,
    // making AM instance
    <application module instance> = Configuration.createRootApplicationModule(<AM name>, config);
    // performing operations
    <operation result> = <application module instance>.<access VO with any operation>();
    System.out.println("Get result here");
    // disconnecting AM instance
    <application module instance>.getDBTransaction().disconnect();
    Configuration.releaseRootApplicationModule(<application module instance>, true);
    These are the activities which are performed by a single user. Now, I am doing stress test on same activities. I am testing the same code with 300 concurrent users (using JMeter with JSP URL). These are working fine. Also I checked multiple times, it always working fine.
    Now, I need to do something through which I can improve the performance. I know, I can use AM pool configurations to make this more effective. I have gone through the Oracle documents and checked the same test case with default or recommended pool configurations and I found similar kind of results (there is not much difference).
    On other hand, I tried with 'releaseRootApplicationModule' method with false parameter and found better results in default as well as recommended pool configurations.
    My question is, is the change of pool configurations recommended by Oracle really work? or do I need to concentrate more on coding part with default pool configurations?
    Here, I would like to know, what are the best practice (in code as well as pool configurations), I need to follow if I really want to improve the performance in real scenarios (when our application will access with large no. of concurrent users).
    I really look forward some help from experts. I have given a lot of time on this to know how really we can make our application more effective in terms of performance.
    I really appreciate for your reply.
    Regards,
    Dilip Gupta.

    >
    We added the createRootApplicationModule() API (in the oracle.jbo.client.Configuration class) to simplify acquiring an application module from the pool for brief programmatic manipulation before it is released back to the AM pool.
    Steve Muench.
    >
    check [url http://radio-weblogs.com/0118231/2009/08/20.html#a959]Check Your App for Misuse of Configuration.createRootApplicationModule()
    Edited by: Mohammad Jabr on May 10, 2012 7:14 AM

  • Nested Application Module State

    As I understand it Application Modules (AM) that are nested inherit the parent 'Transaction'. My question is do they inherit the Stateful/Stateless behaviour from the parent ?

    yes it inherits' the complete definition.
    including release_mode, which is the parameter i assume, that you mean.
    hth clemens

  • Lazy mode setting in Application Module AM for 10g

    Hi,
    I am using Jdev 10.1.3.x
    There is very little information given on Lazy mode setting in AM.
    I tred to enable that and written System.out.println() in getter and setter in Impl class.
    Even though i enabled Lazy mode application on load of page executes this sop(s) which means iterator gets executed on load of page.
    I want to prevent execution of iterator on load of page to boost the page load time. i have VO draged dropped on the page but they are rendered on click of search button. So execution of Iterator impacts the performance.
    Any suggeston will be appriciable.
    Thanks & Regards,
    Kevin Chheda

    Hi Shay Shmeltzer,
    Thanks for the reply.
    Yes you are correct that through post back we can display the result after user has interacted with page. But when i entered some System.out.println()s in the getter and setter of Impl they were executed on load, which implies that post back just controlls when to display data. And when we set the EL rendered="#{adfFacesContext.postback == true}", On load of page iterator is executed and only data is not displayed, which causes one query on load of page which is not desired.
    My ultimate aim is to boost up the onload time and not to query databse when not reqired to prevent Database hit. Through this technique i think we can boost up time by not rendering data on page but cannot prevent free hit to Database.
    Revert in case my assumption need to be refined, and also i would like to know what exactly happens when we enable Lazzy mode option in impl tuning. And how do i assure that it is not querying Database.
    Thanks & Regards,
    Kevin Chheda

  • How to use prepared statement by Application Module on ADF?

    Hello
    i am using a prepared statement on the view side of my project,
    this is my code, i'm not sure about using this code.
    AppModuleGFTImpl am = (AppModuleGFTImpl) Configuration.createRootApplicationModule(amDef,config);
    try {
    ps =am.getDBTransaction().createPreparedStatement("Select * from XXXXXX where kullanici_id=? and sifre=?",0);
    ps.setString(1, kullanici);
    ps.setString(2, sifre);
    rs = ps.executeQuery();
    if (rs.next()) {
    girebilir = true;
    } else {
    girebilir = false;
    ps.close();
    rs.close();
    //am.getDBTransaction().closeTransaction(); ? I'm not Sure
    //Configuration.releaseRootApplicationModule(am, true); ? I'm not Sure
    Is it True? How we use this code on the project view side? Must we close Transaction, or release application Module.
    thanks for interest.
    sorry my english.

    Hello, for the SP you can use something like this in your application module
      private static final String BULKSTAMMENN =
        "begin IVA_OWNER.IVA_UI_ALGEMEEN_PCK.USM_SNELLE_INVOER_GUI( P_RLE_ID => :1, P_AANTAL => :2, P_OJR_JAAR => :3, P_RAS_ID => :4, P_TOELICHTING => :5, P_SUCCES => :6 ); end;";
    public void bulkStamen ( int rasId, int telerId, int jaar, int aantal, String toelichting ) {
        CallableStatement bulkStamenSP = null;
        try {
          bulkStamenSP = getDBTransaction().createCallableStatement( BULKSTAMMENN, 0 );
          bulkStamenSP.setInt( 1, telerId );
          bulkStamenSP.setInt( 2, aantal );
          bulkStamenSP.setInt( 3, jaar );
          bulkStamenSP.setInt( 4, rasId );
          bulkStamenSP.setString( 5, toelichting );
          bulkStamenSP.registerOutParameter( 6, Types.VARCHAR );
          bulkStamenSP.executeUpdate();
        } catch ( Exception e ) {
          log.warning( "Aanroep naar " + BULKSTAMMENN + " gefaald, " + e.getMessage() );
        } finally {
          if ( bulkStamenSP != null ) {
            try {
              bulkStamenSP.close();
            } catch ( Exception e ) {
              log.warning( e.getMessage() );
        log.info( "Stammen bulk uitgevoerd voor " + rasId + " " + telerId + " " + jaar + " " + aantal + " " +
                  toelichting );
      }You can then drag this method onto your page or right into your task flow if your using JDev 11.
    Also you can access it from a backing bean although the methods above are preferred
    -Anton

  • Single session for all Application Modules

    Hello,
    I've got an application that has several Application Modules. All these modules need some data that are set from time to time. I've written some code that calls getSession().getUserData().put("myData",myData). After this method was called in another Application Module i want to retrieve myData with getSession().getUserData().get("myData"). But the result depends if I use 2-tier or 3-tier. In 2-tie I get myData while in 3-tier I get null. My question is:
    Is there a Session object or any other data instance that could be accessed from all Application Modules for on application instance.
    E.g. I've got two user (A,B) who start my application. Through using my app several instance of Application Modules are created. All Application Modules that are created for the instance of User A should be able to share his user name and some other dynamic data while the Application Modules created for B should have no access to that data.
    Doe anybody know if static data of an Application Module are a possible solution?
    regards
    Joerg

    Hi Joerg,
    I am not 100% sure what you are trying to achieve, and with which version of JDeveloper/ ADF, technologies (JSP, Swing), etc, but I can tell you that I have been experimenting with single session accounts myself within a rich-client Swing environment, as I have experienced Oracle DBA guys who want to control user authentication via Oracle accounts (I have achieved this via the JCLoginDialog mechanism, and a bit of a hack)... Frank Nemphius (sp?) posted something about a white paper coming out on a related subject but I don't know where he is with that.
    Anyway, I managed to do it in a prototype by nesting several application modules within a Root Application Module that was essentially simply a Container for the other application modules. Using this mechanism I was able to bind my root application module to any panel I wanted and it would inherit the roots Session.
    ie. I used many application modules and it only used one Oracle Session.
    However, my reservations -
    1) This solution was not tested robustly!
    2) I doubt this would be ideal for a distributed app with thousands of users - My solution is for a very complex app, with a limited number of users.
    Finally, I cannot confirm this is a great solution - I can only tell you it worked in my prototype, and I am currently awaiting the ADF source - when my company and Oracle can decide what level of support we currently have and need!?!? - what exactly does being an "Oracle partner" mean??? Its all very boring and un-interesting to a Java person like me... ;-)
    Once I have the source I will look at how it actually works and perhaps be able to answer questions like this more definitively. Hmm - I wonder if I could get the Oracle JDBC driver source too?? .... Is it written in C or C++?? I know them too... ;-)
    Cheers........Dean

  • ADF BC: Optimal Application Module Runtime Configuration

    Have implemented an intranet application for 1000 users using the following technologies implemented on Oracle JDeveloper 10.1.3.0.4:
    ADF BC for my Services layer
    JSF for my Controller layer
    JSF and ADF for my View layer
    ADF Model for my Data layer
    The application is entirely designed by .jspx and .jsp pages (for reports), handling 106 application modules, with several entity and view objects and without any step-by-step stateful scenario. At each page, there appears a commit button to commit the end-user transaction, and a rollback button to return to the previous page.
    The application is database-backed from an Oracle Database 10g, deployed on three application servers Oracle 10.1.3.1 on three different hosts on Suse Linux OS, used data-source connection and AM pooling, and load-balanced by one webcacher in front of the 3 servers.
    Under stress test scenario, on a heavy system load in production environment, several ADF State Management errors were recognized that pushed the webacher and application server with the maximum load to automatic restarts due to either demand for JVM increased heap size or errors from the database that the TNS listener complained it could not handle any more connections.
    Thus, we started a safety/reliability tess for all our application module components (disabling "Enable application module pooling"), and a stress test using a third-party stress tool at work, but we're still faced with several questions.
    (a) What is the best strategy for AM configuration, to quit State Management at all since our application doesn't need it, and if so can it be done globally or declaratively and not individually and programmatically?
    (b) Testing on application module runtime configuration, we observed that not to "hang-on" on a connection -default functionality- but to release it at the end of each HTTP request, as each deployment is concentrated on a single data-source connection pool/single user, brought less open JDBC connections on A.S.? Is this the optimal run-time configuration than the default for our case?
    (c) If State Management errors are resolved, and using a software balancer before 3 application servers, regulate the traffice by 1/3 to each, is it possible that a system crash will be avoided next time?
    So, our problems related to ADF tunning and State Management Errors, but we need a good advice on this topic as the overall documentation is case-specific.

    Chapter 29 "Understanding Application Module Pooling" in the ADF Developer's Guide for Forms/4GL Developers on the ADF Learning Center at http://www.oracle.com/technology/products/adf/learnadf.html is the best place to start. There is no "magic" optimal configuration that I (or anyone here, really) can suggest to you. You need to understand the various "knobs and dials" that control the pool sizing and pool cleanup behavior, and then apply application-specific information to this information to derive what the optimal configuration for your particular application will be. The chapter explains how the application module pool and database connection pool interact, and in which situations it is best to change the default setting of the jbo.doconnectionpooling property to true.
    Chapter 28 "Application Module State Management" describes the functionality of that facility of the framework, as well as how to release the application module in stateless, unmanaged mode if you need to.
    By following the tips in the section "28.3.2.4 Setting Release Level in an Custom ADF PageLifecycle" (which builds on information introduced in section "10.5.4.1 Globally Customizing the ADF Page Lifecycle"), you can generically impose a different release level in your application without "touching" every page.
    As a general rule, if you have:
    (*) Lots of distinct application modules
    (*) Each of which is used as a separate data control (rather than being nested inside a containing application module as described in section "8.9.3 Root Application Modules Versus Nested Application Module Usages" of the dev guide)
    (*) Each of which uses the same database connection
    Then as described in section "29.8 How Database and Application Module Pools Cooperate" in the guide, your application can decrease the total overall number of connections used by using the non-default setting of jbo.doconnectionpooling=true.
    Applications using many distinct data controls in the span of a single user's session need to be aware of Bug# 4566186 ("PERF: ADFBINDINGFILTER CHECKS OUT ALL ADF BC DATA CONTROLS USED AT LEAST ONCE"). This issue has been fixed in JDev/ADF 11g, but apparently the fix was too complex to accommodate a 10.1.X backport. I'm trying to document a workaround and publish it on my blog, but I'm not finished with it yet.

  • JBO-25224: Could not disconnect and retain application module

    We are migrating an ADF application from Weblogic 10.3 to 10.3.3. The application works fine on 10.3 BUT on 10.3.3, when the application tries to connect to the database we get the following exception
    oracle.jbo.JboException: JBO-25224: Could not disconnect and retain application module state because database state exists for current connection.
    at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4692)
    at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:310)
    at oracle.jbo.server.DBTransactionImpl2.reconnect(DBTransactionImpl2.java:329)
    I shall really appreciate any help.
    thanks

    We are migrating an ADF application from Weblogic 10.3 to 10.3.3. The application works fine on 10.3 BUT on 10.3.3, when the application tries to connect to the database we get the following exception
    oracle.jbo.JboException: JBO-25224: Could not disconnect and retain application module state because database state exists for current connection.
    at oracle.jbo.server.DBTransactionImpl.disconnect(DBTransactionImpl.java:4692)
    at oracle.jbo.server.DBTransactionImpl2.disconnect(DBTransactionImpl2.java:310)
    at oracle.jbo.server.DBTransactionImpl2.reconnect(DBTransactionImpl2.java:329)
    I shall really appreciate any help.
    thanks

  • Max no of application modules

    Hi all,
    In our Jdeveloper application, we have around 18 root application modules (with no nested application modules).
    For a new project, we want to build a another model project on top of this application. Is it possible to do so? and if so what are the issues that we should consider?
    Also, as i got to know, there is a limitation on maximum no of application modules that an application can have. Can some one pls explain on it?
    Thanks in advance,
    Surangi

    "Will this cause a performance or any other issue that would degrade application quality?"
    It depends doesn't it. If you have heaps of CPU & memory and only 1 user, no. If you have millions of user, a 486 and a tape driver for memory, yes.
    In essence we have no statistics about your system, and even if we did it would be pretty meaningless to us. As such you should under take load and stress testing to gather statistics and see if the performance is adequate in your specific case.
    "And is there a identified number as the optimum number of application modules for one application?"
    Again there are no guidelines on this, there is no magic X number. Obviously the more AMs you have the more CPU & memory you will consume. But if you have a low number of users this will be not a problem, and from a development point of view it may just be easier to separate AMs.
    CM.

  • 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

  • How Many Application Module should I have ?

    Hi All,
    Could you please share your experience...
    I am developing a ADF Faces + BC application, how can I determine how many application module should I have ?
    I have modules , i.e :
    Sales
    AR
    Inventory
    Purchasing
    GL
    Can I say that I should have 5 application modules ? ( one for each module ? )
    Thank you for your info,
    xtanto

    Its difficult to know if 80 is too much or jus right...The danger is that if you have many application modules, and for example a particular UI page requires you to manipluate data in many application modules then this has potential to be "overkill"...each AM requires a check out from the AM pool and database connection etc. etc. etc.
    If you need to manipulate many app modules on a single UI page if you were to nest these application modules then this might be more reaslistic...However, if a couple of UI pages requires manipulation of only one app module this sounds reasonable...
    I dont know if that really helps you
    So if on pages A, B and C you maintain Sales Order (which is one app module) then thats ok.
    If in pages X, Y and Z you manipulate Quotation (which is one app module) that would be ok as well.
    If the use case is that in page F, G and H you maintain Sales and on page J you maintain Quotation then you might want to nest one inside the other.
    If your use case is on screen K, L M, N, O, P and Q you access 4-5 different app modules then that would raise a concern with me...
    Again, don't know if that helps,,,
    One way of lookin at this is to create your VOs based on the way you want in the information to appear on your pages and from those pages think about the "uses case" and create your app modules based on those use cases...
    Does that help?
    regards
    Grant

  • Adding instances of an Application Module

    Hello,
    I have created a Root Application Module where I need to include two (independent) instances of the same Search Application Module as submodules.
    Is this possible? The wizard in JDev9.0.3 does not allow it, but if I modify the xml file where the RootAM is saved, I can manuelly force the two instances in. Now the wizard recognizes both instances without giving errors.
    The question is if this will work, or if I will get "crosstalk" between the submodules.
    thanks for any help.

    No, that's no good idea.
    The idea is that the searcher does a lot of work to present the correct results in his ResultView. For example it will dynamically create viewlinks to other views.
    following your suggestion has two disadvantages:
    - I must duplicate all code and views in Searcher to allow two independent searches.
    - I must now in advance how many independent searches will be done by one single application module. What happens if there is another application module, which, for some reason, needs to perform THREE independent searches in parallel?
    - The use of the Searcher is not intuitive, as the client for example has two now how to perform the first search and what to change when performing the second search.
    Just think of the Idea of a simple bean:
    Thinking in java (and not in BC4J) you would create a simple bean to perform a certain task (maybe a search). And if you have to perform the task twice you simple create two beans, each representing one of the independent tasks. Thinking in java, this is simple. And I expect that this idea, thinking in BC4J, should be also simple.

Maybe you are looking for