Painting one root Application Module to rule them all

hi
The description below uses the same MyApplicationModuleListener approach as I describe in the forum thread "painting a picture of Application Module pooling".
Another example review of Application Module pools behaviour is the blog post by Chris Muir, "JDev 11g, Task Flows & ADF BC – one root Application Module to rule them all?".
That post also says "... we'll have trouble discerning what the ADF BC layer is actually doing underneath the task flow transaction options. ...", where the approach below might help alleviate some of that discerning trouble.
And about "... By deduction as there are no other log entries, this second instance of Root1AppModule must be nested under the root Root1AppModule? ..." more information will be logged, so less deduction is required.
The blog post describes an application similar to this one (which is using the HR.EMPLOYEES table) created using JDeveloper 11.1.1.6.0
at http://www.consideringred.com/files/oracle/2012/OneSizeOneRootAMApp-v0.01.zip
It uses somewhat different names than the blog post, and it has two sets of task-flows so that no transaction configuration changes are required to review the behaviour.
When a MyApplicationModuleListener approach is introduced (with minor changes, mostly configuration, using JAR files available in MyApplicationModuleListenerApp-v0.03.zip) it results in the application available
at http://www.consideringred.com/files/oracle/2012/OneSizeOneRootAMApp-v0.02.zip
Using this, the (chained) "No Controller Transaction" scenario's result in similar logging like this:
[C][L][r1001][(ctx31) /faces : /firstIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
[C][L][r1002][(ctx32) /faces : /firstIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
[C][L][r1001][(ctx31) /faces : /firstIndex] onAfterRequest() : no ApplicationPools
[C][L][r1002][(ctx32) /faces : /firstIndex] onAfterRequest() : no ApplicationPools
[C][L][r1003][(ctx31) /faces : /firstIndex] setRequestInfoPrefix() : extra [POST with 5 parameters (partial request false) (initial render false) (postback true)]
[C][L][r1003][(ctx31) /faces : /firstIndex] onNewConstruction() : [(am501) FirstAppModuleImpl_1 (not root) parent = (null)]
[C][L][r1003][(ctx31) /faces : /firstIndex] onActivate() : [(am501) FirstAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@16cbcec)
[C][L][r1003][(ctx31) /faces : /firstIndex] onCreate() : [(am501) FirstAppModule (is root)]
########FirstAppModuleImpl.create() called.  AM isRoot() = true
[C][L][r1003][(ctx31) /faces : /firstIndex] onAfterConnect() : [(am501) FirstAppModule (is root)]
[C][L][r1003][(ctx31) /faces : /firstIndex] onPrepareSession() : [(am501) FirstAppModule (is root)]
########FirstAppModuleImpl.prepareSession() called.  AM isRoot() = true
[C][L][r1003][(ctx31) /faces : /firstIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1003][(ctx31) /faces : /firstIndex] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1003][(ctx31) /faces : /firstIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1003][(ctx31) /faces : /firstIndex] onNewShortId() : pNewShortId = ds81, pId = java:comp/env/jdbc/connHRDS - com.bea:ServerRuntime=DefaultServer,Name=OneSizeOneRootAMApp@connHR@connHR,ApplicationRuntime=OneSizeOneRootAMApp,Type=JDBCDataSourceRuntime
[C][L][r1003][(ctx31) /faces : /firstIndex] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 168; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 0; psc add 0; psc csi 0; psc del 0; psc hit 0; psc mis 0; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
[C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1004][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 168; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [POST with 55 parameters (partial request false) (initial render false) (postback true)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onNewConstruction() : [(am502) SecondAppModuleImpl_154 (not root) parent = (null)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onActivate() : [(am502) SecondAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@8add89)
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onCreate() : [(am502) SecondAppModule (is root)]
########SecondAppModuleImpl.create() called.  AM isRoot() = true
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterConnect() : [(am502) SecondAppModule (is root)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPrepareSession() : [(am502) SecondAppModule (is root)]
########SecondAppModuleImpl.prepareSession() called.  AM isRoot() = true
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onPassivateState() : 5 : [(am502) SecondAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[C][L][r1005][(ctx31) /faces : /firstam-btf/empVoFirstViPage] onAfterRequest() : 2 : ApplicationPool = onesizeonerootamapp.model.SecondAppModuleLocal
(ap22)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onPassivateState() : 5 : [(am502) SecondAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 4; psc add 4; psc csi 4; psc del 0; psc hit 0; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[C][L][r1006][(ctx31) /faces : /secondam-btf/empVoSecondViPage] onAfterRequest() : 2 : ApplicationPool = onesizeonerootamapp.model.SecondAppModuleLocal
(ap22)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 0; unav 2; cp hig 2; ac cur 2; ac avg 0; ac hig 2; co del 122; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 4; psc add 4; psc csi 4; psc del 0; psc hit 0; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]The "Always Begin New Transaction and Always Use Existing transaction" scenario results in logging like this:
[C][L][r1001][(ctx31) /faces : /secondIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
[C][L][r1002][(ctx32) /faces : /secondIndex] setRequestInfoPrefix() : extra [GET with 3 parameters (partial request false) (initial render true) (postback true)]
[C][L][r1001][(ctx31) /faces : /secondIndex] onAfterRequest() : no ApplicationPools
[C][L][r1002][(ctx32) /faces : /secondIndex] onAfterRequest() : no ApplicationPools
[C][L][r1003][(ctx32) /faces : /secondIndex] setRequestInfoPrefix() : extra [POST with 5 parameters (partial request false) (initial render false) (postback true)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onNewConstruction() : [(am501) FirstAppModuleImpl_1 (not root) parent = (null)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onActivate() : [(am501) FirstAppModule (is root)](session version 11.1.1.61.92 oracle.jbo.server.SessionImpl@1d90a2c)
[C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am501) FirstAppModule (is root)]
########FirstAppModuleImpl.create() called.  AM isRoot() = true
[C][L][r1003][(ctx32) /faces : /secondIndex] onAfterConnect() : [(am501) FirstAppModule (is root)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onPrepareSession() : [(am501) FirstAppModule (is root)]
########FirstAppModuleImpl.prepareSession() called.  AM isRoot() = true
[C][L][r1003][(ctx32) /faces : /secondIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onNewConstruction() : [(am502) FirstAppModuleImpl_2 (not root) parent = (null)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onSetParent() : 2 : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = (null)] parent = [(am501) FirstAppModule (is root)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
########FirstAppModuleImpl.create() called.  AM isRoot() = false
[C][L][r1003][(ctx32) /faces : /secondIndex] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1003][(ctx32) /faces : /secondIndex] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1003][(ctx32) /faces : /secondIndex] onNewShortId() : pNewShortId = ds81, pId = java:comp/env/jdbc/connHRDS - com.bea:ServerRuntime=DefaultServer,Name=OneSizeOneRootAMApp@connHR@connHR,ApplicationRuntime=OneSizeOneRootAMApp,Type=JDBCDataSourceRuntime
[C][L][r1003][(ctx32) /faces : /secondIndex] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 1; ci 1; ref reu 0; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 75; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 0; psc add 0; psc csi 0; psc del 0; psc hit 0; psc mis 0; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[L-before][L][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
[C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1004][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 2; ci 2; ref reu 1; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 1; avai 0; unav 1; cp hig 1; ac cur 1; ac avg 0; ac hig 1; co del 75; co tot 1; res req 1; fai res 0; fai rec 0; h avai 1; h unav 1; lea co 0; psc acc 2; psc add 2; psc csi 2; psc del 0; psc hit 0; psc mis 2; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[L-before][L][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] setRequestInfoPrefix() : extra [POST with 55 parameters (partial request false) (initial render false) (postback true)]
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateStateForUndo() : [(am501) FirstAppModule (is root)] pId = null, pClientData = null, pFlags = unknown passivation flags (0)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 2 : [(am501) FirstAppModule (is root)] pClientData = null, pFlags = PASSIVATE_UNDO_FLAG, PASSIVATE_TO_STACK_FLAG (40)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateConnectionState() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pDoc = (name = #document, doc elem = null), pParent = (name = CONN)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateConnectionState() : [(am501) FirstAppModule (is root)] pDoc = (name = #document, doc elem = null), pParent = (name = CONN)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPrepareForPassivation() : [(am501) FirstAppModule (is root)] pOut = (name = #document, doc elem = null) pParent = (name = AM)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPrepareForPassivation() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pOut = (name = #document, doc elem = null) pParent = (name = AM)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 3 : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]] pDoc = (name = #document, doc elem = null), pParent = (name = AM)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 3 : [(am501) FirstAppModule (is root)] pDoc = (name = #document, doc elem = null), pParent = (name = AM)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onNewConstruction() : [(am503) SecondAppModuleImpl_155 (not root) parent = (null)]
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onSetParent() : 2 : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = (null)] parent = [(am501) FirstAppModule (is root)]
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onCreate() : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
########SecondAppModuleImpl.create() called.  AM isRoot() = false
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1005][(ctx31) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 3; ci 3; ref reu 2; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 1; unav 1; cp hig 2; ac cur 1; ac avg 0; ac hig 2; co del 79; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 3; psc add 3; psc csi 3; psc del 0; psc hit 0; psc mis 3; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]
[L-before][L][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_USING (1) STATUS_SUCCESS (8) (rp 4)]
[C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] setRequestInfoPrefix() : extra [GET with 5 parameters (partial request true) (initial render false) (postback true)]
[C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onPassivateState() : 5 : [(am501) FirstAppModule (is root)] pId = -1, pClientData = null, pFlags = PASSIVATE_HINT_FLAG (16)
[C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[C][L][r1006][(ctx31) /faces : /secondam-tx-btf/empVoSecondViPage] onAfterRequest() : 1 : ApplicationPool = onesizeonerootamapp.model.FirstAppModuleLocal
(ap21)[cre 1; rem 0; act 0; pas 0; co 4; ci 4; ref reu 3; ref rec 0; unr rec 0; fail 0; tot am 1; max am 1; avg am 1; tot ava 1; avg ava 1; avg una 0; tot ref 1; ses 1; avg ses 1]
(ds81)[cur cap 2; avai 1; unav 1; cp hig 2; ac cur 1; ac avg 0; ac hig 2; co del 79; co tot 2; res req 2; fai res 0; fai rec 0; h avai 1; h unav 2; lea co 0; psc acc 5; psc add 3; psc csi 3; psc del 0; psc hit 1; psc mis 4; wfc cur 0; wfc fai 0; wfc hig 0; wfc tot 0; wse hig 0]This seems to confirm more explicitly some of the observations in the blog post, and at the same time might add some additional insight into what the framework is doing.
Suggestions to improve such MyApplicationModuleListener approach (or an alternative approach) are welcome.
many thanks
Jan Vervecken

fyi
Some additional features were added in the JAR files available
in http://www.consideringred.com/files/oracle/2013/MyApplicationModuleListenerApp-v0.05.zip
Like line numbers, or a queryOneRecord() method to support logging the database session SID, or a TaskFlowInfoHelper class to allow logging task-flow transaction options or DataControlFrame information.
If these JAR files are used, it results in the modified example application
at http://www.consideringred.com/files/oracle/2013/OneSizeOneRootAMApp-v0.03.zip
For the same scenarios (using OneSizeOneRootAMApp-v0.03.zip), the resulting logging can be found in these files:
- "maml-log-20130113-jdev111160-nctx.txt" : when using JDeveloper 11.1.1.6.0 and the chained "No Controller Transaction" scenario :
[0002][C][L][r1001][(ctx31) /faces : /firstIndex] logContextInformation() :
[0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.1.61.92
[0007][C][L][r1002][(ctx32) /faces : /firstIndex] onAfterPrepareModel() : task-flow = (no current TaskFlowId) (unbounded task-flow pages)
[0008]transaction type = (no current TaskFlowId), DC scope = (no current TaskFlowId), DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = false
[0044][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-btf.xml#firstam-btf (no page-fragments)
[0045]transaction type = -No Controller Transaction-, DC scope = shared DataControlScopeType, DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = false
[0046][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-btf.xml#secondam-btf (no page-fragments)
[0047]transaction type = -No Controller Transaction-, DC scope = shared DataControlScopeType, DC frame = e1o4lmuw3_2, open transaction = null, is transaction dirty = true
[0057][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[0058](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
[0060][C][L][r1005][(ctx32) /faces : /firstam-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[0061](am502) SID = 27 for select sys_context('USERENV', 'SID') as sid from dual
Notice the transaction type and DataControl scope information per task-flow.
Notice the different database session SID values ("[0058](am501) SID = 41" and "[0061](am502) SID = 27") during the same request [r1005].
- "maml-log-20130113-jdev111230-nctx.txt" : when using JDeveloper 11.1.2.3.0 and the chained "No Controller Transaction" scenario :
[0002][C][L][r1001][(ctx31) /faces : /firstIndex] logContextInformation() :
[0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.2.62.76
Notice the logged information seems similar to when, for the same application and scenario, JDeveloper 11.1.1.6.0 is used (above).
- "maml-log-20130113-jdev111160-tx.txt" : when using JDeveloper 11.1.1.6.0 and the "Always Begin New Transaction and Always Use Existing transaction" scenario :
[0002][C][L][r1001][(ctx31) /faces : /secondIndex] logContextInformation() :
[0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.1.61.92
[0013][C][L][r1003][(ctx32) /faces : /secondIndex] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-tx-btf.xml#firstam-tx-btf (no page-fragments)
[0014]transaction type = Always Begin New Transaction, DC scope = isolated DataControlScopeType, DC frame = 1220j2l4q9_5, open transaction = 1220j2l4q9_5, is transaction dirty = false
[0017][C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am501) FirstAppModule (is root)]
[0018](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
[0025][C][L][r1003][(ctx32) /faces : /secondIndex] onCreate() : [(am502) onesizeonerootamapp_model_FirstAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
[0026](am502) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
[0056][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-tx-btf.xml#secondam-tx-btf (no page-fragments)
[0057]transaction type = Always Use Existing Transaction, DC scope = shared DataControlScopeType, DC frame = 1220j2l4q9_5, open transaction = 1220j2l4q9_5, is transaction dirty = true
[0060][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onCreate() : [(am503) onesizeonerootamapp_model_SecondAppModule (not root) parent = [(am501) FirstAppModule (is root)]]
[0061](am503) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
[0063][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[0064](am501) SID = 41 for select sys_context('USERENV', 'SID') as sid from dual
Notice that nested Application Module instances are created, resulting in one database session SID value per request.
- "maml-log-20130113-jdev111230-tx.txt" : when using JDeveloper 11.1.2.3.0 and the "Always Begin New Transaction and Always Use Existing transaction" scenario :
[0002][C][L][r1001][(ctx31) /faces : /secondIndex] logContextInformation() :
[0003]#{a_versionBean.appVersionInfo} = OneSizeOneRootAMApp v0.03 : oracle.jbo.Version = 11.1.2.62.76
[0052][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/firstam-tx-btf.xml#firstam-tx-btf (no page-fragments)
[0053]transaction type = Always Begin New Transaction, DC scope = isolated DataControlScopeType, DC frame = dw58co387_4, open transaction = dw58co387_4, is transaction dirty = false
[0059][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterPrepareModel() : task-flow = /WEB-INF/btf/secondam-tx-btf.xml#secondam-tx-btf (no page-fragments)
[0060]transaction type = Always Use Existing Transaction, DC scope = shared DataControlScopeType, DC frame = dw58co387_4, open transaction = dw58co387_4, is transaction dirty = true
[0070][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am501) FirstAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[0071](am501) SID = 38 for select sys_context('USERENV', 'SID') as sid from dual
[0073][C][L][r1005][(ctx32) /faces : /firstam-tx-btf/empVoFirstViPage] onAfterDoPoolMessage() : [(am502) SecondAppModule (is root)][(ses101) MESSAGE_TYPE_RELEASING (2) STATUS_SUCCESS (8) (rp 3)]
[0074](am502) SID = 38 for select sys_context('USERENV', 'SID') as sid from dual
Notice that two root Application Module instances are used in the same request (and no nested instances), and both (am501) and (am502) report using the same database session SID value. That seems to be "Bruce" [1] at work.
Remember, it should not be difficult (and not intrusive) to configure similar logging for other ADF applications.
- [1] seeblog post "Task flows: Sayonara auto AM nesting in 11.1.2.0.0. Hello, ah, let's call it Bruce."
at http://one-size-doesnt-fit-all.blogspot.com.au/2011/08/task-flows-sayonara-auto-am-nesting-in.html
regards
Jan Vervecken

Similar Messages

  • One Calling Search Space to rule them all?

    Hi everybody!
    I'm new in this whole CUCM configuration, and something the immense number of options, setting, elements and others CUCM has are overhelming!!
    Today I noticed the many, many places where we can set a Calling Search Space (CSS) and I would like to know if CSS set somewhere prevails over
    another.
    This is where I have found the option to set a CSS
    Device Pool -> Device Mobility Related Information (Device Mobility Calling Search Space)
    Device Pool -> Device Mobility Related Information (Calling Search Space for  Auto-registration)
    End User (SUBSCRIBE Calling Search Space)
    Phone (Calling Search Space)
    Directory Number (Calling Search Space)
    Directory Number -> "Call Fonuard and Call Pickup Settings" (Calling Search Space)
    Most probably this field should be somewhere else, but this is when I got really confused.
    Fore example a Phone can be related with a DN, with a Device Pool, with an End User.... each of this this four elements, can be assigned with a different CSS.
    Now, if for example I want to allow or restrict a international call (based on the CSS) where be the best place to do it?
    Do I need to change the CSS everywhere?
    Thank you!!

    Hi,
    most of the parameters - including Calling Search Spaces - may be configured at multiple places.
    There is one important thing to remember, though: if a parameter is not set for a certain entity, it might be still applied - using the parameter value at a lower level.
    So if CSS is not set at the Line level, the CSS set at the Device level is applied (in other words, if no CSS is set on the Directory Number page, then the CSS set at the Phone Device level is applied).
    That's the easy part.
    Now, what happens if the CSS is set at both the Directory Number and the Device level: the lists of partitions are concatenated. First comes the partitions from the DN, then the partitions from the Device.
    So if there's a CSS called "LineCSS" containing partitions A, B, C and a CSS called "DeviceCSS" with partitions X, Y, Z, then anyone calling from that DN would have access to partitions (and in this order): A, B, C, X, Y, Z.
    Unless it's a CTI Port, because then the order is different, first comes Device, then the line, so it would be X, Y, Z, A, B, C.
    A bit confusing, isn't it?
    Now, back to the list you posted: not everything named CSS is related to calling restrictoins. Restrictions, yes.
    Take the SUBSCRIBE CSS - it's related to who can see whose presence information.
    I would recommend you to take a look at the "Help for this page" for each page - they might contain useful information for a beginner.
    Have fun,
    G.

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

  • Root Application Module connecting to 2 databases technologies

    I have an application which needs to connect to 2 different databases.
    I managed to get access to each databases in their own respective Application Modules.
    In order to achieve that, I created a new ViewObject within the "oracle" model, and still used the "MySQL" query. Using the jbo.envinfoprovider property, I can force the Application module to connect to the appropriate database, MySQL in this case.
    Now, my problem is that I need to have a Root application module that will use BOTH "child" application module and eventually BOTH database connections. At the moment, I can only use one at a time. Using the jbo.envinfoprovider property of the ROOT application module allows me to select which of the 2 database I want to use, but I need both.
    To put it in a tree-like structure, here's what I want to achieve :
    ROOT (Oracle + MySQL)
    |
    |__ AppModule1 (Oracle)
    | |
    | |__ View1
    | |__ View2
    |
    |__ AppModule2 (MySQL)
    |
    |_ View3

    What I mean is if I deploy the application on the integrated weblogic server, using the default navigation flow defined in the adfc-config.xml file, when I reach the "forensic" page, it will try to "read" from both database and fail at reading the second database.
    The page displays the following :
    1- a table containing the records from the Oracle database (3 columns=> ID, pattern, solution)
    2- an adf_form used to populate the above table :
    - the ID is bound to a database trigger, so is set to readonly
    - the solution is a text input field
    - the Pattern is a LoV, based on the data found on the MySQL database.
    If I test the page from the "forensic.jspx" itself (by right-clicking and selecting "Run"), I can manage the data just fine (I can do any CRUD operations I want)
    on the other hand, if I go to the "adfc-config.xml" file and (right-click and then select "Run"), the page will only read one of the two database (I can control which one, by changing the jbo.envinfoprovider property of my application module)
    Hope this helps understand what I am trying to achieve.
    Thanks !

  • Root Application Module

    i understand that we can't extend and substitute the root application module for a page. However, I am not sure how to tell if the AM I am working with is a root AM, actually I am not sure what a root AM is either. I tried extending PsrAM which is under oracle.apps.ap.payments.psr.server. It is the AM that is referred to from PsrPG.xml.
    So how do I tell if this is the root AM?
    Thanks for any help you can give!
    Dennis

    Dennis
    In addition to what chandra mentioned. Your saying that root AM cant be extended is not 100% correct
    i understand that we can't extend and substitute the root application module for a pageWe can extend root AM as well provided that page doesnot have any LOV in it.
    However as a workaround you can create a custom Application Module in Jdev and add it to page with the help of StackLayout Region.
    Thanks
    AJ

  • Creating Root Application Module

    Hi,
    I'm trying to instantiate a root application module from another root application module,
    that imports the first as a library jar file.
    In the "Oracle ADF Model and Business Components API Reference" I have found the following sample code:
    java.util.Hashtable env = new java.util.Hashtable();
    // Add environment entries into env...
    javax.naming.Context ic = new InitialContext(env);
    String defName = ...;
    oracle.jbo.ApplicationModuleHome home = ic.lookup(defName);
    oracle.jbo.ApplicationModule am = home.create();
    but I don't understand how to initialize the 'env' variable.
    Can I have other samples and suggestions?
    Arturo

    Try something like this:Hashtable prop = new Hashtable();
    prop.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
    prop.put(Context.PROVIDER_URL, “opmn:ormi://<server>:<container>/<application>”);
    prop.put(Context.SECURITY_PRINCIPAL, “user”);
    prop.put(Context.SECURITY_CREDENTIALS, “password”);
    javax.naming.Context ic = new InitialContext(prop);You have to fill in <server> <container> and <application>.
    Timo

  • How do I go about deleting mulitple song files all at one time as opposed to deleting them all individually off of the latest version of iTunes

    How do I go about deleting mulitple song files all at one time as opposed to deleting them all individually off of the latest version of iTunes?
    Also I have tried authorizing my computer to play the songs I purchased off of iTunes when I had an iPhone 4 and it will not allow me to play them whatsoever. I now have an iPhone 5 and wish to load these past song purchases onto my new phone. How do I solve this issue?

    what you're missing to export multiple files is the batch export command available in the file menu or by control clicking on the items in the browser.  You can export multiple sequences/clips at full resolution with this.
    This has been available in fcp for a long long time.
    Wow, you are right.  Now that you mention it, I can't believe I never noticed that.  Thanks.
    Only if you have the 'Self-Contained' box checked.  Otherwise you'll end up with a reference movie.
    Correct.  That box is typically checked by default.  There are other default settings you could change that would not result in a full-quality version, but what I meant was hitting that option from the pull-down menu, then changing nothing and hitting ok.

  • One Key to Rule them all - gpg

    Hi,
    Right now i have multiple gpg keys, one for each identity i assume.
    Its kinda annoying having to manage them all, but at least i have some control
    of what i share with other.
    Anyways, i just thought of an alternative,
    Is it possible to have one key with multiple ids (ids taking the place of seperate keys) and then only share a certain
    subset of those ids with other people?
    For example, i could have one key with 2 ids, and when i send it to a keyserver, i only
    send it with one of those ids.
    Is that a better way to manage things?
    More/less secure?
    Thanks

    If any other id ever "leaks" to the keyservers, it will be stored in public forever.

  • One menu to rule them all

    Hello,
    I am working on new training series. I have been able to
    capture a total of 8 projects. When we publish them they are fine.
    My issue is the following.
    I would like to make an interface screen that would auto
    launch so that the user would have a choice of what demonstration
    they would like to see. Ultimately we would like the final project
    to be an exe
    So far I have tried to create buttons that point to animation
    (swf) slides. We would like this demo to be standalone and not link
    based.
    The issue with this is that the end user cannot use the main
    “progress” bar at the bottom of the screen (I have to
    include a progress bar in the animation, so it looks like there are
    2 progress bars at the bottom of the screen. If I do not include
    the progress bar there is no way to fast forward the animation).
    Also if I go back to the main (first slide) slide and chose another
    demonstration the audio from the first on is still playing and over
    laps.
    The next thing I tried was importing all the projects into
    one “supper” projects.
    The issues with this is that now I can access the progress
    bar but now I can skip from one demo to another (I would like
    create a break in between. The user should only see one demo at a
    time)
    I know I could create link to exes but I would like to avoid
    IE (internet Explorer) or any other browser.
    Does anyone know how to make a selection screen where the
    user would select a demo to view and only that demo would be shown
    in the time “progress” bar at the bottom of the screen?
    And that at the end of the demo would go back to the main title
    screen.
    We love the program so far but we really are hoping that this
    can be done.
    Thanks
    Michael

    Hi Michael
    I would like to make an interface screen that would auto launch
    so that the user would have a choice of what demonstration they
    would like to see. Ultimately we would like the final project to be
    an exe
    Have you explored the companion MenuBuilder application for
    this?
    So far I have tried to create buttons that point to animation
    (swf) slides. We would like this demo to be standalone and not link
    based.
    Not sure I follow you there. Anything that offers an ability
    to click to launch a movie will be link based.
    The issue with this is that the end user cannot use the main
    “progress” bar at the bottom of the screen (I have to
    include a progress bar in the animation, so it looks like there are
    2 progress bars at the bottom of the screen. If I do not include
    the progress bar there is no way to fast forward the animation).
    Also if I go back to the main (first slide) slide and chose another
    demonstration the audio from the first on is still playing and over
    laps.
    Sounds as if you are trying to accomplish this all in one
    single .SWF? Perhaps by importing different movies on different
    slides of a master movie?
    The next thing I tried was importing all the projects into one
    “supper” projects.
    The issues with this is that now I can access the progress
    bar but now I can skip from one demo to another (I would like
    create a break in between. The user should only see one demo at a
    time)
    Again, perhaps MenuBuilder could help here. Either that, or
    perhaps Jesse Warden's Captivate Player?
    Click
    here for Captivate Player. Fellow Adobe Community Expert Paul
    Dewhurst also offers up assorted players.
    Click
    here
    I know I could create link to exes but I would like to avoid IE
    (internet Explorer) or any other browser.
    Again I'm confused. EXE files are normally presented in their
    own player and not inside a browser.
    Cheers... Rick

  • Font Book Query- one font book to rule them all...

    I see three places to install/display/keep fonts in Font Book-
    All
    User
    Computer
    I'd love to have just one place that I install fonts to and that all my apps and any user of the machine can access.
    1) Which one should I install to to acheive this?
    2) If I've fonts that show in one and not another of these locations what's the best way to ensure that those fonts get shifted in to the right one?
    3) Are fonts in these locations duplicated files or just shortcuts to one file?
    iMac G5   Mac OS X (10.4.5)   minimal RAM (512MB) installed

    The basic rules are:
    Keep out of system/fonts. (You can alter here, but you need to be really careful)
    library/fonts allows all users of the Mac access to fonts inside.
    user/you/library/fonts are for THAT user only.
    Kurt Lang has a great font FAQ - I have to find the link for it. You can/will learn most of what you need to know from that.
    I highly recommend Linotype FontExplorer X. You can get it from macupdate.com or versiontracker.com.
    *EDIT: HERE is the link. Enjoy.
    Scott

  • On the Air w/ Scale Computing: One Appliance to Rule Them All!

    Appliances are everywhere in IT these days (and no, we don’t mean your toaster). From virtualization to networking to backup, all-in-one solutions make things easier to save money and get started faster, but is everything really as good as advertised? And when does a DIY solution still make more sense?
    In this edition of “On the Air” we look at the pros and cons of appliances vs. traditional servers, and we’ll talk with real IT pros and Scale to find out the inside scoop of purchasing, installing, and managing server appliances.
    One does not simply want to miss out on this show!
    This topic first appeared in the Spiceworks Community

    @Henweigh99,
    I can't quite put my finger on why, but I get a little bit of "code smell" from this approach.  Maybe it's because using a global join table for all relationships is counter to every app and example I've ever seen.  I'm also wondering if some many-to-many relationships might be made more confusing (which is the parent and which is the child might not be clear cut), and keeping consistent throughout your application might be a challenge.
    I can see wanting to remove some of the "noise" of all the individual join tables typically found in databases.  Personally, however, I prefer to let the database do as much of the "heavy lifting" as possible, including managing the referential integrity.
    Are all of your relationships many-to-many?  If some are one-to-many, you can use a foreign-key column in the child tables that stores the primary-key of the parent table - and the database can still manage referential integrity.  That may reduce the need for some of the join tables.
    Regardless, if you decide to proceed with the global join table you need to make absolutely sure your indexes on that table are tuned properly or you'll likely take a performance hit.
    -Carl V.

  • One scrollbar to rule them all?

    Hi there,
    I'm working on a flex app, and it has several nested components.
    When those components don't fit vertically they tend to create their own scrollbar, and at some points my app gets filled of scrollbars, whics is reaaally annoying.
    Instead of this, I would like to have ONLY ONE vertical scrollbar, on the <mx:Application> so that when it's necessary, the <mx:Application> will make it appear and it will be the sum of all components' heights.
    Is there any way to achieve this? I heard the Box component tries to resize itself and propagates the new sizes to it's parents, but this hasn't been the case.
    Here's an example of the nesting:
    <mx:Application>
         <mx:HBox height="100%" width="100%">
              <mx:ViewStack width="80%" height="100%">
                   <mx:HBox height="100%" width="100%">
                        <mx:List/>
                        <mx:Panel height="100%">
                                  <mx:HBox>
                                       <mx:DataGrid>
                                       <mx:HBox>
                                            <LineChart>
                                            <Legend>
                                       </mx:HBox>
                                  </mx:HBox>
                        </mx:Panel>
                   </mx:HBox>
              </mx:ViewStack>
              <mx:Panel width="20%" height="100%"/>
          </mx:HBox>
    </mx:Application> 
    Any help will be appreciated. Thanks. Bye.

    If you want to make u component change their heights according to change in outer container make heights in % else if outer container is of FIXED height mention height in pixels to avoid scrolls but u have to keep eye on total height of childs shouldnt exceed parent's height.
    so keep H & V scroll policies OFF for childs.

  • One wallet to rule them all!

    Hi,
    I wonder if you can settle a debate we are having...should we have one wallet per database or one wallet per application?
    That is, we have several applications that access the same database and would like to know the best practice for storing Oracle Wallets. Should we have a single Wallet where all certificates are imported and it is then accessed by all applications or a separate Wallet for each application with the certificates required for that application alone?
    Many Thanks,
    Tom

    Hi Michael
    I would like to make an interface screen that would auto launch
    so that the user would have a choice of what demonstration they
    would like to see. Ultimately we would like the final project to be
    an exe
    Have you explored the companion MenuBuilder application for
    this?
    So far I have tried to create buttons that point to animation
    (swf) slides. We would like this demo to be standalone and not link
    based.
    Not sure I follow you there. Anything that offers an ability
    to click to launch a movie will be link based.
    The issue with this is that the end user cannot use the main
    “progress” bar at the bottom of the screen (I have to
    include a progress bar in the animation, so it looks like there are
    2 progress bars at the bottom of the screen. If I do not include
    the progress bar there is no way to fast forward the animation).
    Also if I go back to the main (first slide) slide and chose another
    demonstration the audio from the first on is still playing and over
    laps.
    Sounds as if you are trying to accomplish this all in one
    single .SWF? Perhaps by importing different movies on different
    slides of a master movie?
    The next thing I tried was importing all the projects into one
    “supper” projects.
    The issues with this is that now I can access the progress
    bar but now I can skip from one demo to another (I would like
    create a break in between. The user should only see one demo at a
    time)
    Again, perhaps MenuBuilder could help here. Either that, or
    perhaps Jesse Warden's Captivate Player?
    Click
    here for Captivate Player. Fellow Adobe Community Expert Paul
    Dewhurst also offers up assorted players.
    Click
    here
    I know I could create link to exes but I would like to avoid IE
    (internet Explorer) or any other browser.
    Again I'm confused. EXE files are normally presented in their
    own player and not inside a browser.
    Cheers... Rick

  • One Knob to Rule Them All?

    is there a way that I can use one rotary MIDI controller to just give me control over what ever parameter I am on at the moment?
    I thought this use to be possible in earleir versions of logic but I can not seem to find it in Logic 9

    Hi Michael
    I would like to make an interface screen that would auto launch
    so that the user would have a choice of what demonstration they
    would like to see. Ultimately we would like the final project to be
    an exe
    Have you explored the companion MenuBuilder application for
    this?
    So far I have tried to create buttons that point to animation
    (swf) slides. We would like this demo to be standalone and not link
    based.
    Not sure I follow you there. Anything that offers an ability
    to click to launch a movie will be link based.
    The issue with this is that the end user cannot use the main
    “progress” bar at the bottom of the screen (I have to
    include a progress bar in the animation, so it looks like there are
    2 progress bars at the bottom of the screen. If I do not include
    the progress bar there is no way to fast forward the animation).
    Also if I go back to the main (first slide) slide and chose another
    demonstration the audio from the first on is still playing and over
    laps.
    Sounds as if you are trying to accomplish this all in one
    single .SWF? Perhaps by importing different movies on different
    slides of a master movie?
    The next thing I tried was importing all the projects into one
    “supper” projects.
    The issues with this is that now I can access the progress
    bar but now I can skip from one demo to another (I would like
    create a break in between. The user should only see one demo at a
    time)
    Again, perhaps MenuBuilder could help here. Either that, or
    perhaps Jesse Warden's Captivate Player?
    Click
    here for Captivate Player. Fellow Adobe Community Expert Paul
    Dewhurst also offers up assorted players.
    Click
    here
    I know I could create link to exes but I would like to avoid IE
    (internet Explorer) or any other browser.
    Again I'm confused. EXE files are normally presented in their
    own player and not inside a browser.
    Cheers... Rick

  • Execute SQL after root application module is created

    Hi friend
    I override this method from Root appModule implementation
    protected void afterConnect() {
    super.afterConnect();
    //I add this line to execute a query when appmodule get db connection
    String statement = "ALTER SESSION SET CURRENT_SCHEMA='SCOTT';";
    CallableStatement plsqlBlock = getDBTransaction().createCallableStatement(statement, 0);
    plsqlBlock.execute();
    This is right?, i want to alter schema in db session always.

    If it is a session specific initialization, you can try prepareSession() method as explained here.
    http://adfcodebits.blogspot.in/2010/06/bit-21-overriding-preparesession-to-do.html
    http://docs.oracle.com/cd/B31017_01/web.1013/b25947/bcservices006.htm

Maybe you are looking for

  • Question on security in ABAP program with ITS. Please help!

    Hi Experts,         I have a question on security in ABAP program. I have a ABAP program which has a transaction attached. I have added authorization check in ABAP program(Progran level security). I have also attached the authorization object to the

  • Reducing audio distortion on video imported into iMovie.

             Hello, I am trying to clean up the audio on some videos that I imported from a friends cell phone. The video was taken at a concert up close. It seems that the cell phone's speakers were overwhelmed by the volume at the concert and the audio

  • Really serious now

    A lot of peolpe have iPods now. This player really good - looks good, plays good, has many features. Some would say it`s perfect. But one thing keeps it from being so - iTunes. There are a lot of posts in this and other forums. People have a lot of p

  • Run report in form 11g with RP2RRO.RP2RRO_RUN_PRODUCT

    I have installed Forms 11g R2 on Windows Server2008 64bit using tools are :- Weblogic Server 10.3.6 SE JDK 6U35 64bit Windows Server 2008 (Firewall off) Oracle Portal,Forms,Report, and Discoverer Services (11.1.1.4.0) I try to run report within form

  • Consignment and pipeline settlement error

    Hi Expert! I have error when processing consignment and pipeline settlement for company code 4424. The error is "No message was found for partner 146073/company code 4424". Can anyone tell me what has going wrong and how to solve it? Thanks.