What is behaviour of pooling in OC4J?

We are having an out of memory problem with our application running under the 9.0.2 OC4J container.
I have read two different pieces of documentation that provides conflicting information - the orion-ejb-jar.xml documentation on orion's site indicuates that the default pooling behaviour is to have infinite number available in the pool, whereas Oracle's default is 10. I tried putting it to 5 to see what it would do, and we seemed to be kicked out after 5 calls.
Which brings me to my questions:
1) What is the TRUE default behavior of EJB pooling (with no orion-ejb-jar.xml)? My guess is infinite, based on this observation.
2) What is the behavior of the container when it reaches the maximum? Does it block clients when it tries to call n+1 beans until the container releases them? Does it automatically 'passivate' the additional beans and reclaim them? Based on our observations, it seems to block.
Any tips on memory usage, controlling instances of EJB creation, etc, would be appreciated. We've upped the -Xmx use by a half a meg, but it seems to fill up the available VM memory available - can this be limited or are we really looking at continually upping it until we're happy - initially we tried 1024, which worked for quite some time until additional clients came online, and then we upped it to 1536, which seemed reasonable, but it quickly filled up. Any thoughts/experience on heap size setting vs # of session/entity bean use?
Thanks
Jason

Apache 2. something (this is noted in the documentation and releasenotes...)

Similar Messages

  • Troubles with connection pool onto oc4j 1.0.2.2.1

    hi all,
    we try migrate our ejb-application to oc4j from weblogic. and I can't understand how can I set connection pooling for oc4j.
    our envirionment are Solaris2.8, Oracle 8.1.7, OC4J 1.0.2.2.1.
    our datasource I've defined as:
    then in code we standard snippet for get pooled connection.

    You can add the following parameters:
    min-connections="50"
    max-connections="100"
    to increase pool connections.
    (However Ive found the datsource is not very forgiving regarding
    sqls withins sqls)
    Hope this helps

  • What is a function pool?

    What is a function pool? How is it related to function group?

    HI,
    The introductory statement FUNCTION-POOL declares a program in which you can define function modules. At runtime, it has the effect that u2013 during program loading u2013 a new program group with its own screens and its own shared data areas is created in the internal session of the calling program. For this reason, function groups must always begin with a FUNCTION-POOL statement. The statement FUNCTION-POOL is usually generated by the Function Builder. Other programs (executable programs, module pools, and subroutine pools) should not begin with a FUNCTION-POOLstatement, since they would then not share common data areas with the caller when loaded by an external subroutine call. However, in exceptional cases, you can force processing of your own screens for externally called subroutines if you introduce executable programs or module pools with FUNCTION-POOL. As in the REPORT and PROGRAMstatements, you can specify the message class for the program and the standard list formatting options of the program using FUNCTION-POOL.
    In simple Term,,,,
    The FUNCTION-POOL statement is equivalent to the REPORT statement and introduces a function group.
    A function group contains function modules introduced by the FUNCTION statement and called
    with the CALL FUNCTION statement.
    Hope this is useful for u...

  • What is Multithreaded connetion pooling?

    What is Multithreaded connetion pooling? And How it helps in peformance of the OBI reports??

    Hi,
    Please check; http://download.oracle.com/docs/cd/E12096_01/books/admintool/admintool_PhysicalSetup11.html#wp1005614
    "When the check box is select ed, Oracle BI Server terminates idle physical queries (threads). When not selected, one thread is tied to one database connection (number of threads = maximum connections). Even if threads are idle, they consume memory.
    The parameter DB_GATEWAY_THREAD_RANGE in the Server section of NQSConfig.ini establishes when Oracle BI Server terminates idle threads. The lower number in the range is the number of threads that are kept open before Oracle BI Server takes action. If the number of open threads exceeds the low point in the range, Oracle BI Server terminates idle threads. For example, if DB_GATEWAY_THREAD_RANGE is set to 40-200 and 75 threads are open, Oracle BI Server terminates any idle threads. "
    Good Luck,
    Daan Bakboord

  • What is Database Recycle Pool.

    Hi,
    I was reading that we could have three buffer pool in memory depending upon the access method of objects.
    1. Keep Pool -
    2. Recycle Pool - This pool is used to eliminate blocks from memory which have littel chance of being re-used.
    3. Default Pool -
    I could not understand the def of Recycle pool, if a block has little chance of being re-used then why don't it is directly flushed out. What is the need of Recyle Pool? Or is it same as "Recyle Bin" on PC?
    Thanks,

    This story starts with the database buffer cache hit ratio. The goal of tuning this region is to obtain at least 90% hits. However, this goal cannot be reached if there are large tables which are randomly accessed, reducing the chances for a block to be reselected in the next minutes. This behaviour leads to a reduction in the regular cache hit ratio.
    Now what about a buffer where only those kind of access could take place?, This could immediately reflect an increase in the cache hit ratio. So the buffer pool recycle is created.
    All of the tables which are randomly or seldom accessed, are declared to be cached in the recycle. Normally Recycle CHR is around 60% or less. You can check V$SEGMENT_STATISTICS to determine the individual cache hit ratio contribution of each segment. All of those segments who individually degrade the CHR, go to the recycle.
    Use the alter table command to define where the segment blocks go.

  • What is REMOTE AM-POOLING ?

    i noticed REMOTE AM-POOLING in Oracle JDeveloper 10.1.3.1 Developer Preview Fix List ( http://www.oracle.com/technology/products/jdev/htdocs/10.1.3.1/10131dpfixlist.htm)
    i want to know what's it and how to implement it ,because i will try to replace Stateful Session EJB with it.
    thanks.

    1. Visit the "Remote" panel of the AM editor
    2. Enable the "Remote" checkbox, and shuttle the "EJB Session Bean" choice into the "Selected" list.
    3. With the "EJB Session Bean" choice selected in the "Selected" list, inside the "EJB Session Bean" group box at the bottom of the dialog, click (New) next to the "Local Configurations drop-down list.
    4. If you don't like the default name of the local configuration (e.g. "YourModuleLocal1"), you can click the (Edit...) button to rename it. For example, you could rename it to "AppModuleLocalServerSide").
    5. Click (OK)
    The above steps will create you a "YourModuleBean" EJB Session Bean in the ".server.ejb.beanmanaged" subpackage of the package where your AM lives. ADF BC design time will keep that auto-generated bean up to date as you make any changes to your application module in the future.
    Now you just need to deploy the EJB session bean to a remote server. To do this, create an ADF BC deployment profile by following these steps:
    0. Create an application server connection in the Connections Navigator to the external OC4J or Oracle AppServer server you want to deploy to.
    1. In the "New" gallery, select "Business Components Deployment Profiles"
    2. On "Step 1 of 3: Profiles" in the wizard, ensure that "EJB Session Bean" is in the selected list. (NOTE: It should be by default given what you did above)
    3. On "Step 2 of 3: EJB Session Beans", select the connection name to which you want to deploy from the "Deplyo to Connection" dropdown.
    4. Click (Next) and then (Finish).
    To deploy the EJB Session Bean-wrapped application module to the remote server, select the deployment profile created above, then choose "Deploy..." from the right-mouse context menu.

  • Whats a String constant pool?

    I was reading an article about weak references and came across a peice of code
       Map<String,String> map = new WeakHashMap<String, String>();
          map.put(new String("Scott"), "McNealey");They also said
    if you don't call new String(), the reference for the map key will be to the system's string constant pool. This never goes away, so the weak reference will never be released. To get around this, new String("Scott") creates a reference to the reference in the string constant pool. The string contents are never duplicated. They stay in the constant pool. This simply creates a separate pointer to the string constant in the pool.
    I never heard of String constant pool could any one enlighten me. I didnt get the point of what above paragraph says also.
    Jubs

    No it won't: it will only be removed when the garbage collector rears
    its ugly head. Until then the reference will be present in the map.Okay it was unprecise. The item MAY be removed immediately after it
    has been inserted because the key object is only referenced from the
    Map itself.Yes, that is true, but mind though: any object that still has a strong
    reference to it will not be removed from that map. I use such weak maps
    for localization reasons a lot. When a localization changes (while the
    application is running), a whole lot of visual components must have
    their text part changed. They are all stored in such a weak reference map.
    Of course quite some visual components can be garbage collected
    at some time (think of labels etc. in JDialogs after the dialog has been
    disposed).
    These maps are ideal for those purposes.
    kind regards,
    Jos

  • What does "Illegal Constant Pool Type" error signify ?

    Hello,
    I have developed an application on a windows system that connects to a database, places values onto an object, and displays on a screen. When I run on a windows environment everything works fine. When I export to my external server, which is linux system, I get an "Illegal Constant Pool Type" error.
    What does this mean and how can I rectify?
    The error message can be found at:
    http://www.blazingvibes.com/blazinvibes/indexhome.jsp
    Thank you all for your help.

    No idea since I can't see the error or code.
    And I don't know about anyone else but I don't click on links unless I know the source, so its current location isn't going to help in that matter.
    Presumably you are doing printStackTrace() so the location of the error is obvious.

  • Help please: What gets pinged - Connection Pool

    I have a connection pool set up and can "ping" it, but I cannot seem to use it in my application.
    What exactly gets "pinged" (what address)?
    For example, my setup looks like this:
    Data Source Class Name - net.sourceforge.jtds.jdbcx.JtdsDataSource
    Resource Type - javax.sql.XADataSource
    serverName - localhost
    port - 1433
    datasourceName - jdbc/testSqlServerDatasource
    databaseName - testdatabase
    Under the connection pools in the Application Server Admin Console, I can "ping" this connection.
    When I go out to a DOS prompt and try to ping, I cannot. What I tried was:
    ping localhost:1433/jdbc/testSqlServerDatasource
    ping localhost:1433/testSqlServerDatasource
    ping localhost/testSqlServerDatasource
    What exactly should I be able to "ping"?
    Note too that I have a JDBC Resource set up (also using the Admin Console) with a JNDI Name of testSqlServerDatasource.
    Thanks.

    The Ping in connection pool actualy tries to establish the connection with the database for which the configuration is provided in the Connection Pool page. The ping on DOS command is not same with what you actualy do in Connection Pool page. The DOS ping "helps in determining TCP/IP Networks IP address as well as determine issues with the network and assists in resolving them".

  • What checks the String pool

    Hi there.
    With regard to the string pool,
    my book states that whenever the compiler
    encounters a string literal that it will check the pool to see if
    there is a matching string...
    This doesn't seem right to me.
    I would have imagined that the JVM would perform this operation at runtime.
    Maybe I'm wrong, but I googled it and I came across some sites that indicate that
    the JVM checks the string pool.
    Im just wondering which is it, the JVM or the compiler.
    Thanks & regards.

    jverd wrote:
    Both.
    String s1 = "abc";
    String s2 = "abc";Compiler sees the first line, looks for "abc" in the class' constant pool, doesn't find it, adds it, places reference to its position for the assignment to s1.
    Compiler sees the second line, looks for "abc", finds it, places reference to its position for the assignment to s2.
    At runtime, when class is loaded, VM loads class' String constant pool. When time comes to execute the above lines, the bytecode tells it which constant pool entry to reference.Great answer (No, I'm not sarcastic)

  • What is sub routine pool in sap script? when it is used?

    hi ,
             i am new to sap-abap can any one clarify my doubt .

    Hi Praveen,
    If you modify the sap standard script according to that you have to modify the print program also....
    But its not advisable to modify the print program directly so, for the changes what ever u have made in the scripts you have to write the logic in a subroutine with in report program and you have to call this subroutine with PERFORM statement in the scripts.....
    Reward points if it is helpful..
    Regards,
    Omkar.

  • 903/902/BC4J can't get OC4J data-sources.xml conn pooling to work in production: help

    [cross posted to the j2ee forum]
    I have several BC4J ears deployed to a 903 instance of OC4J being configured as a standalone
    instance. I've had this problem since I started deploying in development on 902. So it's
    some basic problem that I've not mastered.
    I can't get data-sources.xml managed connection pooling to actually pool conn's. I'm wanting
    to declare my jndi jdbc source connection pool in j2ee/home/config/data-sources.xml and
    have all BC4J apps get conns from this JNDI JDBC pool. I've removed all data-sources.xml from
    my BC4J ears, and published the jndi jdbc source in my oc4j common data-sources.xml.
    I've tested that this is the place controlling the conn URL/login passwd by commenting it
    out of config/data-sources.xml and my BC4J apps then throw exceptions, can't get conn.
    I've set the oc4j startup cmd line with the BC4J property to enabled connection pooling:
    -Djbo.doconnectionpooling=true
    symptom
    Connections are created and closed. Instead of being put back into the pool managed by oc4j,
    what ever BC4J is doing or my data-sources.xml is doing, the connections are just being created and
    closed.
    I can verify this via (solaris) lsof and netstat, where I see my oc4j instance under test load
    with only 1 or 2 conns to the db box, and the ephemeral port is tumbling, meaning a new socket is
    being opened for each conn. ;( grrrrrrr
    Does anyone have a clue as to why this is happening?
    Thanks, curt
    my data-sources.xml
    <data-sources>
         <data-source
            class="com.evermind.sql.DriverManagerDataSource"
            connection-driver="oracle.jdbc.driver.OracleDriver"
            ejb-location="jdbc/DEVDS"
            location="jdbc/DEVCoreDS"
            name="DEVDS"
            password="j2train"
            pooled-location="jdbc/DEVPooledDS"
            url="jdbc:oracle:thin:@10.2.1.30:1521:GDOC"
            username="jscribe"
            xa-location="jdbc/xa/DEVXADS"
            inactivity-timeout="300"
            max-connections="50"
            min-connections="40"
        />
    </data-sources>

    Thanks Leif,
    Yes, set it to the location jndi path.
    A piece of info is that the 903 oc4j release notes states that global conn pooling doesn't
    work. Infering that the j2ee/home/config/data-sources.xml data sources aren't pooled or ??
    I just tested so called local connection pooling, where I edited the data-sources.xml that
    gets packaged in the ear, to include the min/max params and re-ran my test.
    Still, the AM creates a new conn, it's to a new socket, and closes the conn when done. Causing
    each conn to not be pooled, rather opened then closed to the DB box. As verified with lsof and
    netstat, checking the ephemeral port # on the DB box side, always changes, meaning it's a
    new socket and not an old pooled conn socket.
    ???? What the heck??
    Surely if the AM conn check out / return code works properly, OC4J's pooling JDBC driver would
    pool and not close the socket??
    Has anywone gotten JDBC Datasource connections in BC4J to actually be pooled under OC4J??
    Since I couldn't get this to work in my early 902 oc4j testing, and now can't get it to work
    still under 903 OC4J, either it's my config or BC4J AM's code or OC4J?
    Any thoughts on how to figure out what's not configed correctly or has a bug?
    Thanks, curt

  • NameNotFOundException in OC4J Connection Pool

    Hi,
    I am trying to implement connection pooling in OC4J.I modified the data-sources.xml file as follows:
    <!-- DataSource for Connection Pooling for MD Database -->
    <managed-data-source name="MDDS"
    connection-pool-name="SampleConnectionPool"
    jndi-name="jdbc/MDDS"/>
    <connection-pool name="SampleConnectionPool"
         min-connections="10"
         max-connections="100"
         inactivity-timeout="30">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"
    user="xxx"
    password="xxx"
    url="jdbc:oracle:thin:@//localhost:1521/zzz">
    </connection-factory>
    </connection-pool>
    My Java Coding is as follows:
    javax.naming.InitialContext ic = new javax.naming.InitialContext();
         javax.sql.DataSource dataSource = (javax.sql.DataSource)ic.lookup("jdbc/MDDS");
         con = dataSource.getConnection();
    While executing the above code,I am getting "javax.naming.NameNotFoundException : jdbc/MDDS not found..
    Am I missing any step?.Thanks.

    Have you restarted the container?

  • What OC4J Container?

    Hi everyone
    In eBS R12 on Unix , what is the script name for OC4J Container?
    is it adoacorectl.sh, or not?
    I am a bit confused.
    And is Apache this one : adapcctl.sh ?
    Many thanks
    Edited by: user107654321 on Jun 18, 2009 2:19 AM

    Hi,
    Oracle Containers for Java (OC4J) is an Oracle Application Server component that replaces the JServ component used in earlier releases of E-Business Suite. Based on J2EE standards, OC4J allows execution of Servlets, Java Server Pages (JSP), and Enterprise Java Beans (EJB).
    Oracle HTTP Server provides the foundation for the Oracle Application Server Web services. Built on Apache Web server technology, Oracle HTTP Server supports Java servlets, JavaServer Pages (JSPs), perl, PL/SQL, and CGI applications.
    Oracle Applications Concepts
    http://download.oracle.com/docs/cd/B53825_01/current/acrobat/121oacg.pdf
    Oracle Application Server 10g Documentation Library
    http://download.oracle.com/docs/cd/B14099_11/index.htm
    Regards,
    Hussein

  • 903/902/BC4J can't get data-sources.xml conn pooling to work in production; help

    I have several BC4J ears deployed to a 903 instance of OC4J being configured as a standalone
    instance. I've had this problem since I started deploying in development on 902. So it's
    some basic problem that I've not mastered.
    I can't get data-sources.xml managed connection pooling to actually pool conn's. I'm wanting
    to declare my jndi jdbc source connection pool in j2ee/home/config/data-sources.xml.
    Have all BC4J apps get conns from this JNDI JDBC pool. I've removed all data-sources.xml from my BC4J ears,
    and published the jndi jdbc source in my oc4j common data-sources.xml. I've tested that this is
    the place controlling the conn URL/login passwd by commenting it out of config/data-sources.xml
    and my BC4J apps then throw exceptions, can't get conn.
    I've set the oc4j startup cmd line with the BC4J property to enabled connection pooling:
    -Djbo.doconnectionpooling=true
    symptom
    Connections are created and closed. Instead of being put back into the pool managed by oc4j,
    what ever BC4J is doing or my data-sources.xml is doing, the connections are just being created and
    closed.
    I can verify this via (solaris) lsof and netstat, where I see my oc4j instance under test load
    with only 1 or 2 conns to the db box, and the ephemeral port is tumbling, meaning a new socket is
    being opened for each conn. ;( grrrrrrr
    Does anyone have a clue as to why this is happening?
    Thanks, curt
    my data-sources.xml
    <data-sources>
         <data-source
            class="com.evermind.sql.DriverManagerDataSource"
            connection-driver="oracle.jdbc.driver.OracleDriver"
            ejb-location="jdbc/DEVDS"
            location="jdbc/DEVCoreDS"
            name="DEVDS"
            password="j2train"
            pooled-location="jdbc/DEVPooledDS"
            url="jdbc:oracle:thin:@10.2.1.30:1521:GDOC"
            username="jscribe"
            xa-location="jdbc/xa/DEVXADS"
            inactivity-timeout="300"
            max-connections="50"
            min-connections="40"
        />
    </data-sources>

    I've run another test using local data-source.xml, that's packaged in the .ear. Still
    pooling under BC4J doesn't work??
    A piece of info is that the 903 oc4j release notes states that global conn pooling doesn't
    work. Infering that the j2ee/home/config/data-sources.xml data sources aren't pooled or ??
    I just tested so called local connection pooling, where I edited the data-sources.xml that
    gets packaged in the ear, to include the min/max params and re-ran my test.
    Still, the AM creates a new conn, it's to a new socket, and closes the conn when done. Causing
    each conn to not be pooled, rather opened then closed to the DB box. As verified with lsof and
    netstat, checking the ephemeral port # on the DB box side, always changes, meaning it's a
    new socket and not an old pooled conn socket.
    ???? What the heck??
    Surely if the AM conn check out / return code works properly, OC4J's pooling JDBC driver would
    pool and not close the socket??
    Has anywone gotten JDBC Datasource connections in BC4J to actually be pooled under OC4J??
    Since I couldn't get this to work in my early 902 oc4j testing, and now can't get it to work
    still under 903 OC4J, either it's my config or BC4J AM's code or OC4J?
    Any thoughts on how to figure out what's not configed correctly or has a bug?
    Thanks, curt

Maybe you are looking for