6 Replies Latest reply: Apr 12, 2012 9:34 PM by user12432153 RSS

    Only one instance of my transaction works - CICS ART

      I have been able to deploy a CICS application on Tuxedo ART 11gR3 on RHEL 5.

      But I can only access the application thorugh 1 Tn3270 window. Until I finish the applictaion, I cant use it from the 2nd terminal window.
      I am trying to figure out how can I get the application to accept multiple concurrent requests.

      The only way I was able to add more clients was through changing the ARTSTRN section of the ubbconfig file from MIN=1 , MAX=1 to MIN=2, MAX=3.
      In fact, this is my setting which is the same as the sample_03 deployment file:


      I observed that this creates a new process for the request as this will be more expensive in higher concurrency requests.

      I did notice that the sample application can handle multiple requests/terminal windows concurrently.

      In the documentation it says that you can use a TRANCLASS to say how many users you can have, but I tried that and it did not work.

      Any ideas?

      Edited by: user522010 on Mar 22, 2012 12:10 PM

      Edited by: user522010 on Mar 22, 2012 12:12 PM

      Edited by: user522010 on Mar 22, 2012 12:12 PM
        • 1. Re: Only one instance of my transaction works - CICS ART
          a single ARTSTRN server can handle multiple requests (that is MIN=1/MAX=1 shouldn't be an issue), you would want more than 1 of these when you have high load. The tn3270 requests come in through TCPL (listener) server, which dispataches them to TCPH (handler) processes. TCPH then connects to ARTSTRN to handle transactions and trigger programs.

          Could you provide ubbconfig details for these servers as well as your transactions.desc, programs.desc, and tranclass.desc resource configuration data? It may be easier to email these to me directly at mark.rakhmilevich@oracle.com.

          Tuxedo ART PM
          • 2. Re: Only one instance of my transaction works - CICS ART
            Hi Mark,

            I will post the files shortly, but first I wanted to get a better understanding of the way the transaction works in ART CICS Runtime.

            I have a program PGA that does a CICS LINK to program PG1. So basically PGA expects a call back from PG1 and PG2 and so on. So basically my problem is that I am only getting one transaction showing at a time, its NOT working concurrent as I would like it to.


            Here is the following:

            SB00;SIMPAPP;pg for simpapp;RSSBT000
            SB01;SIMPAPP;pg for simpapp;RSSBT001
            SB02;SIMPAPP;pg for simpapp;RSSBT002
            SB03;SIMPAPP;pg for simpapp;RSSBT003
            INQ1;SIMPAPP;pg for simpapp;CUSTINQ1
            PGA;SIMPAPP;pg for simpapp;PGA

            RSSBT000;SIMPAPP;pg for simpapp;COBOL; ;ENABLED #the first program of transaction SA00
            RSSBT001;SIMPAPP;pg for simpapp;COBOL; ;ENABLED
            RSSBT002;SIMPAPP;pg for simpapp;COBOL; ;ENABLED
            RSSBT003;SIMPAPP;pg for simpapp;COBOL; ;ENABLED
            CUSTINQ1;SIMPAPP;pg for simpapp;COBOL; ;ENABLED
            PGA;SIMPAPP;pg for simpap;COBOL; ;ENABLED
            PG1;SIMPAPP;pg for simpapp;COBOL; ;ENABLED
            PG2;SIMPAPP;pg for simpapp;COBOL; ;ENABLED


            TRCLASS1;SIMPAPP ; A tranclass bidon for tests; 1
            TRCLASS2;SIMPAPP ; A tranclass bidon for tests; 2


            IPCKEY 43567

            DOMAINID     KIXD      # <REGION>
            MASTER KIXR     # <SUBREGION>
            MODEL SHM
            MAXACCESSERS 100
            MAXSERVERS 50
            MAXSERVICES 10000
            LDBAL N
            BLOCKTIME 30


            DEFAULT: LMID=KIXR
            # Applicative groups
            TCP00 LMID=KIXR



            # OPENINFO="Oracle_XA:Oracle_XA+Acc=P/user/password+SqlNet=ORCL+SesTm=600+LogDir=/opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/xa+DbgFl=0x20"

            ARTTCPL SRVGRP=TCP00
                           CLOPT=" -- -M 4 -m 1 -L //tux5:43567 -n //tux5:43568 +H -1 -D"

            ARTADM SRVGRP=GRP01
            MIN=1 MAX=1
            CLOPT="-o /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stdout_adm -e /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stderr_adm -r --"

            ARTCNX SRVGRP=GRP01
            MIN=1 MAX=1 RQADDR=QCNX015 REPLYQ=Y
            CLOPT="-o /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stdout_cnx -e /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stderr_cnx -r --"

            ARTSTRN SRVGRP=GRP02
            MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
            CLOPT="-o /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stdout_strn -e /opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/sysout/stderr_strn -r -- -s KIXR -l SIMPAPP"


            Edited by: user522010 on Mar 27, 2012 11:20 AM

            Edited by: user522010 on Mar 27, 2012 11:22 AM

            Edited by: user522010 on Mar 27, 2012 11:33 AM
            • 3. Re: Only one instance of my transaction works - CICS ART
              Hi Mark or anyone who can help

              I have not heard back from you or any other Tuxedo expert for a week now. Can you please let me know how should I move forward? I am kind of stuck with this transaction problem.

              It appears that Tuxedo does a tpbegin() when my program starts, however I want to do transactions in each of my sub-programs.

              Currently this is not allowing me to have multiple sessions until one transaction ends. Its behaving more like a ARTSTRN1 server and not a ARTSTRN server. I tried the sample application, and that one behaves as it should, but is it because the sample_03 program is using CICS XCTL instead of CICS LINK?

              Thanks for your help.
              • 4. Re: Only one instance of my transaction works - CICS ART

                As Mark said, you problem is not relevant with the option MIN/MAX of server ARTSTRN, when you have high load or throughput, you could configure multiple ARTSTRN. The TRANCLASS and server ARTSTR1 is only used when some transactions are requested to have only one active instance in one CICS region. This behavoir is as the same as that in Mainframe.

                I think the issue you found is caused by using CICS LINK in CICS program.
                In CICS runtime, CICS LINK and XCTL are both used to call another CICS program, but there are some differences between them.

                when invoke "CICS LINK", the main program(transaction) will not "CICS RETURN" to release the line held in ARTSTRN until the all sub-programs invoke "CICS RETURN" or "GOBACK". It means the main program(transaction) will block the ARTSTRN server until all sub-programs return, and ART CICS runtime will handle each transaction in conversation mode, so if the transaction does not release the line held in ARTSTRN, the ARTSTRN server will not be free to handle another transation. That's why you could not start the 2nd transation in ARTSTRN. In fact we also keep the same behavior as the Mainframe for this.

                When invoke "CICS XCTL", the main program(transaction) will not wait for the sub-program return but will continue to go ahead until "CICS RETURN", so it will not block the ARTSTRN server, that's why sample_03 could work normally.

                Tuxedo ART Dev

                Edited by: user12432153 on 2012-4-12 上午1:08
                • 5. Re: Only one instance of my transaction works - CICS ART
                  Thanks for your answer Sean, so the application behaving exactly like you expect. I am glad about that.

                  But in my case where my application is set up like this, and I cant really change the application. I also wanted to do some testing on it.

                  So if I want to have lets say 10 to 20 concurrent users, I would have to specify 20 MAX connections?
                  Would that be the right way to do it since it will create 20 system processes?

                  • 6. Re: Only one instance of my transaction works - CICS ART
                    Yes, there are no problems. because your transaction is just like a long conversation, and it will always keep on line until all sub-programs return, so if you have 10-20 users, you have to configure multiple ARTSTRN servers, such as MIN=10, MAX=20, but there is one thing you need to take care is that you should have enough COBOL license if you use MicroFocus, since each ARTSTRN server will use one COBOL license. Insufficient COBOL license will cause ARTSTRN server boot failed.

                    Tuxedo ART Dev