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

Similar Messages

  • 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

  • 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

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

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

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

  • 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;

  • 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

  • Calculator for addition using module pool

    Hai all,
       I going to create a calculator for addition using module pool .
       i have set a screen 9001 and i placed a box and inside that i 
      placed 9 push buttons with the naming of 1,2,...9 as same as the normal calulator
      then i have a "PLUS" push button which is used to add the 2 numbers and i have a "SUM" push button in 9001.
      when i click the SUM push button it will call screen 9002 which have the input box for the result purpose.
    can i do this or not??
    i know it is little complicated but i need ur help..and also tell me can push button hold value or not??
                                  thanks and regards,
                                      pradeep.
    Moderator Message: try it and find out for yourself.
    Edited by: kishan P on Jan 19, 2011 4:18 PM

    Hai maha,
      Using i/o is very simpler one that i know but i need to create by using 9 push buttons.
                                                                             thanks,
                                                                             pradeep

  • JAG BUG ? "Set Application Module Superclass to JhsApplicationModuleImpl"

    Is it just me ? or ...
    Whenever I set "Set Application Module Superclass to JhsApplicationModuleImpl" to false and run the Application Generation ... the base class of our ApplicationModuleImpl is set to JhsApplicationModuleImpl anyway (which it is not supposed to do !).
    Our workaround is to go to our ApplicationModuleImpl and set the base class manually.
    Is this a JHS bug ?

    Hi Sandra,
    I just made a testcase and tried to reproduce the "anomoly" I encountered. And ... whatever I try, I cannot reproduce it anymore.
    My testcase:
    ==========
    JHS 10.1.2.1 (build 27)
    Jdev 10.1.2.1.0 (build 1913)
    - created ADF baseclasses in new project : BaseJhsApplicationModuleImpl extends JhsApplicationModuleImpl
    - created standard Emp business components
    - open ApplicationModuleImpl : extend from BaseJhsApplicationModuleImpl
    - enabled JHS on ViewController
    - created new ApplicationStructure (view=JSP ; Set AppModImpl = false)
    - run JAG
    -- open ApplicationModuleImpl : class still extends BaseJhsApplicationModule iso JhsApplicationModuleImpl (--> which is the correct behaviour)
    Whatever change I made to the ApplicationStructure ; the 'anomaly' did not return (fortunately).
    There must have been a glitch in Jdev ... always easy to blame the IDE ; )
    Thanks for your time,
    Pascal Prins

  • [svn:fx-trunk] 10050: Per-Module Style Management: Create a style manager for each application/module.

    Revision: 10050
    Author:   [email protected]
    Date:     2009-09-08 07:43:16 -0700 (Tue, 08 Sep 2009)
    Log Message:
    Per-Module Style Management: Create a style manager for each application/module.
    The singleton StyleManager is still the only style manager that is currently used.
    QE notes: None.
    Doc notes: None.
    Bugs:
    Reviewer: Alex
    Tests run: checkintests, Managers/StyleManager
    Is noteworthy for integration: no
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/SWFLoader.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/FlexModuleFactory.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IFlexModuleFactory.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/events/Request.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/ISystemManager.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/IModuleInfo.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleLoader.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/modules/ModuleManager.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/IStyleManager2.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleManagerImpl.as
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/mxml/lang/StandardDefs.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/tools/PreLink.java

    Remember that Arch Arm is a different distribution, but we try to bend the rules and provide limited support for them.  This may or may not be unique to Arch Arm, so you might try asking on their forums as well.

  • 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

  • Best practice for calling application module methods and plsql code

    In my application I am experiencing problems with connection pooling, I seem to be using a lot of connections in my application when only a few users are using the system. As part of our application we need to call database procedures for business logic.
    Our backing beans, call methods on the application module which in turn call a database procedure. For instance in the backing bean we have code like this to call the application module method.
    // Calling Module to generate new examination/test.
    CIGAppModuleImpl appMod = (CIGAppModuleImpl)Configuration.createRootApplicationModule("ky.gov.exam.model.CIGAppModule", "CIGAppModuleLocal");
    String testId = appMod.createTest( userId, examId, centerId).toString();
    AdfFacesContext.getCurrentInstance().getPageFlowScope().put("tid",testId);
    // Close the call
    System.out.println("Calling releaseRootApplicationModule remove");
    Configuration.releaseRootApplicationModule(appMod, true);
    System.out.println("Completed releaseRootApplicationModule remove");
    return returnResult;
    In the application module method we have the following code.
    System.out.println("CIGAppModuleImpl: Call the database and use the value from the iterator");
    CallableStatement cs = null;
    try{
    cs = getDBTransaction().createCallableStatement("begin ? := macilap.user_admin.new_test_init(?,?,?); end;", 0);
    cs.registerOutParameter(1, Types.NUMERIC);
    cs.setString(2, p_userId);
    cs.setString(3, p_examId);
    cs.setString(4, p_centerId);
    cs.executeUpdate();
    returnResult=cs.getInt(1);
    System.out.println("CIGAppModuleImpl.createTest: Return Result is " + returnResult);
    }catch (SQLException se){
    throw new JboException(se);
    finally {
    if (cs != null) {
    try {
    cs.close();
    catch (SQLException s) {
    throw new JboException(s);
    I have read in one of Steve Muench presentations (Oracle Fusion Applications Team' Best Practises) that calling the createRootApplicationModule method is a bad idea, and to call the method via the binding interface.
    I am assuming calling the createRootApplicationModule uses much more resources and database connections that calling the method through the binding interface such as
    BindingContainer bindings = getBindings();
    OperationBinding ob = bindings.getOperationBinding("customMethod");
    Object result = ob.execute()
    Is this the case? Also is using getDBTransaction().createCallableStatement the best way of calling database procedures. Would it be better to expose plsql packages as webservices and then call them from the applicationModule. Is this more efficient?
    Regards
    Orlando

    Thanks Shay, this is now working.
    I successfully got the binding to the application method in the pagedef.
    I used the following code in my backing bean.
    package view.backing;
    import oracle.binding.BindingContainer;
    import oracle.binding.OperationBinding;
    public class Testdatabase {
    private DCBindingContainer bindingContainer;
    public void setBindingContainer (DCBindingContainer bc) {this.bindingContainer = bc;}
    public DCBindingContainer getBindingContainer() {return bindingContainer;}
    public static String validateUser()
    // Calling Module to validate user and return user role details.
    System.out.println("Getting Binding Container from Home Backing Bean");
    BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
    System.out.println("Obtain binding");
    OperationBinding operationBinding = bindings.getOperationBinding("calldatabase");
    System.out.println("Set username parameter");
    operationBinding.getParamsMap().put("p_userId",userId);
    System.out.println("Set password parameter");
    operationBinding.getParamsMap().put("p_testId",examId);
    Object result = operationBinding.execute();
    System.out.println("Obtain result");
    String userRole = result.toString();
    System.out.println("Result is "+userRole);
    }

Maybe you are looking for

  • Can't sync music from CD's to iphone

    I'm new to this but followed the tutorial to load music from my CD onto itunes.  It did it fine, but after syncing it to my iphone my phone still says I don't have any content when I click the ipod icon on my phone.

  • Plugged in not charging battery wont power laptop

    hi my laptop is showing plugged in not charging the battery is at 46% constantly but if you unplug the power source the laptop instantly powers off and will not start up on battery power normaly if the battery is dead the power button will flash when

  • Calendar tracking not consistant when meetings booked by delegate in cached mode

    Situation: Exchange 2010 Sp3 Outlook 2010 SP1 Cached mode, with delegate having full access to manager's mailbox with auto mapping on. Whe the delaget books a meeting in the managers callander.  Some of the response are not relected in the tracking o

  • Search Server 2010 Express Help Button doesn't work

    I installed Search Server 2010 Express to crawl our file shares and give our users a decent full text search capability and it's working well.  I noticed that the initial search page that comes up, where you would type in your search string, has a li

  • How html textfield use i jsp tag

    hi master sir see my php code i get input in name and fname text box and pass in php tag for insertion into database <html> <body> <form action="mfa.php" method="post"> First Name<input type="text" name="fname"> Second Name<input type="text" name="ln