Thursday, December 29, 2011

Happy and prosperous new year 2012

New year is just 2 days away. It's time for us to plan new things, and carry all the learning from past to face new challenges of tomorrow. I wish you and your family a happy, joyous and prosperous new year 2012 !

Sunday, December 18, 2011

Some Tips on Application Module Usage



Copying some points related to application module configuration on top of what you see in the following chapter - 44 Tuning Application Module Pools and Connection Pools

1. When a web client access a page a new AM instances will be created till the pool size crosses recycleThreshold.

2.Call to Configuration.createRootApplicationModule(qualifiedAMDefName, configName); will use instance from the pool if poolsize > recycleThreshold and unreferenced (free) AM instances are available.  Later when client calls Configuration.releaseRootApplicationModule(applicationModule, true); will remove the instance- doesn't matter how the instance is acquired .

3.Though the call Configuration.releaseRootApplicationModule(applicationModule, false/* remove flag */) , there is now way for a framework to identify the previously used AM instances if the client again calls Configuration.createRootApplicationModule(qualifiedAMDefName, configName) to create a new instance within the same request. However , with releaseRootApplicationModule(..., false) you do get the benefit of potentially reusing that AM (after it was reset) vs. creating a new AM.  Configuration.releaseRootApplicationModule(..., true), removes the AM from the pool.  Configuration.releaseRootApplicationModule(..., false) resets the AM and keeps it in the pool for future use.

4. Framework uses LRU algorithm for selecting an AM instance from the pool for recycling/passivating its state  when new client request for AM.

Monday, December 5, 2011

Calling Application Module Methods from EJB and MDB

Sometime back I blogged about using JMS with ADF BC http://jobinesh.blogspot.com/2011/04/using-jms-with-adf-business-components.html . I'm revisiting this topic with another example illustrating the usage of application module methods from EJB and MDB. The sample uses XA Data source which will help you to force both AM and EJB to share same db transaction. Note that,  I'm calling ApplicationModule::postChangesToDB() to post changes to database when AM method is used inside EJB method, leaving the 'commit' call to the underlying container.


Download

You can download the sample workspace from here.Refer the previous post for setting up the MDB used in the sample + Configure XA Datasource with JNDI name jdbc/HRDS
[Runs with Oracle JDeveloper 11g R2 PS1 + HR Schema]