7 Replies Latest reply: Sep 19, 2013 7:22 AM by Jan Vervecken RSS

    task-flow transaction options and unavailable connections

    Jan Vervecken

      hi

       

      Please consider the example application created using JDeveloper 11.1.2.3.0

      at http://www.consideringred.com/files/oracle/2013/UnavailableConnApp-v0.01.zip

       

      It has a bounded task-flow with a page-fragment on which data is shown from two View Objects instances, each from a different Application Module.

      It also has its Default run-configuration configured with "-Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1".

      (see also documentation section "44.3.2 What You May Need to Know About Database User State and jbo.doconnectionpooling = true"

      at http://docs.oracle.com/cd/E35521_01/web.111230/e16182/bcampool.htm#ADFFD1355 )

       

      The following scenario (sc1) can be tried:

      Run the tryTwoAppMod view activity in adfc-config.xml which will show in an af:region the bounded task-flow two-app-mod-btf with data from two View Object instances in two Application Modules.

      Use the IntegratedWebLogicServer console (via http://localhost:7101/console ) to navigate via Deployments to the application UnavailableConnApp and to its connHR JDBC module.

      Check the Monitoring tab to see the column values (selected via the "Customize this table" link):

      Connections Total Count = 2, Current Capacity = 2, Number Available = 2, Number Unavailable = 0

       

      After stopping/undeploying the application the following scenario (sc2) can be tried:

      On the Behaviour tab of the two-app-mod-btf task-flow change the Transaction option to "Use Existing Transaction if Possible".

      Run the tryTwoAppMod view activity in adfc-config.xml and check the connHR JDBC module Monitoring tab to see the column values:

      Connections Total Count = 1, Current Capacity = 1, Number Available = 0, Number Unavailable = 1

       

      questions:

      - (q1) Why is "Number Unavailable = 1" for scenario (sc2) and not "Number Unavailable = 0" as in scenario (sc1), given the "-Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1" configuration?

      - (q2) What should be configured to get the connHR JDBC module Monitoring tab to show the column values:

      Connections Total Count = 1, Current Capacity = 1, Number Available = 1, Number Unavailable = 0

       

      Trying similar scenario's using JDeveloper 12c (12.1.2.0.0) shows similar behaviour.

       

      regards

      Jan Vervecken

        • 1. Re: task-flow transaction options and unavailable connections
          Chris Muir-Oracle

          Jan, can I ask for a clarification please?

           

          You say:

          It also has its Default run-configuration configured with "-Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1".

           

          ...but the default value for jbo.doconnectionpooling is false (and it is so in your sample application for both AMs as well).

           

          Assuming you actually meant false, we might need to turn your question on it's head.  I would have expected with jbo.doconnectionpooling=false to have meant with the <No Controller Transaction> option you should have instead seen this:

           

          Total Count = 2, Current Capacity = 2, Number Available = *0*, Number Unavailable = *2*


          ....as the created JDBC connections should be held by the referenced AMs and therefore should be unavailable.  So to me this seems in error, not the Use Existing Transaction if Possible option.

           

          I need to run this through the FMW Control performance diagnostics to see what it reports and if this correlates with the WLS console.  (Maybe even DMS Spy would help here?) I'm a few days away from doing this due to internal work, if you have time I suggest you investigate further and report back if you can please.


          CM.

          • 2. Re: task-flow transaction options and unavailable connections
            Jan Vervecken

            Thanks for your reply Chris.

            ChrisMuir wrote:

            ...but the default value for jbo.doconnectionpooling is false ...

            Looks like it could be confusing, but I am talking about the run-configuration named "Default" (by default) which I have configured with Java Options "-Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1" (so JVM system properties).

            ChrisMuir wrote:

            ... (and it is so in your sample application for both AMs as well). ...

            In the sample application (UnavailableConnApp-v0.01.zip) the configured JVM system properties "-Djbo.doconnectionpooling=true -Djbo.txn.disconnect_level=1" are a (less confusing) alternative for a per Application Module configuration.

            ChrisMuir wrote:

            ... Assuming you actually meant false, ...

            So, that is a wrong assumption.

            ChrisMuir wrote:

            ... I would have expected with jbo.doconnectionpooling=false to have meant with the <No Controller Transaction> option you should have instead seen this:

             

            Total Count = 2, Current Capacity = 2, Number Available = *0*, Number Unavailable = *2* ...

            Yes, for that configuration, that is indeed the behaviour I see.

             

            So, please reconsider the scenario's (sc1) and (sc2) and the questions (q1) and (q2) taking the above clarification in to account.

             

            thanks

            Jan

            • 3. Re: task-flow transaction options and unavailable connections
              Chris Muir-Oracle

              Right, sorry for the misinterpretation.

               

              CM.

              • 4. Re: task-flow transaction options and unavailable connections
                Jan Vervecken

                Thanks for you reply Chris.

                ChrisMuir wrote:

                Right, sorry for the misinterpretation.

                No problem, glad the clarification helped.

                 

                Note that I also created Oracle service request 3-7731361361 for questions (q1) and (q2).

                Looking forward to your/their feedback.

                 

                regards

                Jan

                • 5. Re: task-flow transaction options and unavailable connections
                  Chris Muir-Oracle

                  I can the SR coming through internally from the analyst, and will reply there so I'm not replying on multiple channels.

                   

                  CM.

                  • 6. Re: task-flow transaction options and unavailable connections
                    Jan Vervecken

                    fyi

                     

                     

                    - about (q1)

                    -- In the context of SR 3-7731361361 bug 17378310, "TASK-FLOW TRANSACTION OPTIONS AND UNAVAILABLE CONNECTIONS", has been filed for this.

                    (Seemingly related (as "connection leak") bug 17405152, "POOLLIMITSQLEXCEPTION AFTER A FEW BROWSER-SESSIONS FROM SUBSEQUENT REQUESTS", was filed in the context of SR 3-7754676151 .)

                     

                     

                    - about (q2)

                    -- As a workaround for bug 17378310 we go the suggestion to configure "-Doracle.adfm.useSharedTransactionForFrame=false",

                    which does not seem to be documented, but was explained as

                    "In JDev 11.1.2.3.0, framework uses the BC4J shared transaction feature for taskflow transactions. On 11.1.1.7.0 and earlier the framework used to use a shared root AM instead. By setting this property it will be ensured that the transaction taskflow support will start behaving in the way it behaves in 11g Release 1."

                    This seems to improve the behaviour of scenario (sc2).

                     

                     

                    regards

                    Jan Vervecken

                    • 7. Re: task-flow transaction options and unavailable connections
                      Jan Vervecken

                      fyi

                       

                       

                      Because of the "AM hierarchy" changes, this is related to forum thread "what to expect from getApplicationModule() method"

                      at https://forums.oracle.com/thread/2579831

                       

                       

                      regards

                      Jan