This discussion is archived
6 Replies Latest reply: Apr 12, 2012 7:34 PM by 930136 RSS

Only one instance of my transaction works - CICS ART

525013 Newbie
Currently Being Moderated
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:

ARTSTRN SRVGRP=GRP02
SRVID=20
CONV=Y
MIN=1 MAX=1 RQADDR=QKIX110 REPLYQ=Y
......


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
    user734086 Newbie
    Currently Being Moderated
    Hi,
    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.

    Mark
    Tuxedo ART PM
  • 2. Re: Only one instance of my transaction works - CICS ART
    525013 Newbie
    Currently Being Moderated
    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.

    Thanks,

    Here is the following:

    transaction.desc
    *************************************
    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



    programs.desc
    #PROGRAM;GROUP;DESCRIPTION;LANGUAGE;EXECKEY;STATUS
    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

    *************************************

    tranclasss.desc
    TRCLASS1;SIMPAPP ; A tranclass bidon for tests; 1
    TRCLASS2;SIMPAPP ; A tranclass bidon for tests; 2


    ubbconfig

    #------------------------------------------------------------------------------
    *RESOURCES
    IPCKEY 43567

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

    #------------------------------------------------------------------------------
    *MACHINES
    "tux5"
    LMID=KIXR
    APPDIR="/opt/oracle/art11gR1/Cics_RT/sample/sample_03"
    TUXDIR="/opt/oracle/tuxedo11gR1"
    TUXCONFIG="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/config/tux/tuxconfig"
    ENVFILE="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/config/tux/envfile"
    ULOGPFX="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/log/ULOG"
    MAXWSCLIENTS=20
    TLOGDEVICE="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/sysfile/TLOG"

    #------------------------------------------------------------------------------
    *GROUPS
    DEFAULT: LMID=KIXR
    # Applicative groups
    TCP00 LMID=KIXR
    GRPNO=1

    GRP00
    GRPNO=10
    ENVFILE="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/config/tux/envfile"

    GRP01
    GRPNO=11
    ENVFILE="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/config/tux/envfile"

    GRP02
    GRPNO=12
    ENVFILE="/opt/oracle/art11gR1/Cics_RT/sample/sample_03/config/tux/envfile"
    TMSNAME="TMS_ORA"
    TMSCOUNT=2
    OPENINFO="Oracle_XA:Oracle_XA+Acc=P/user/password+SesTm=600+LogDir=/opt/oracle/art11gR1/Cics_RT/sample/sample_03/LOGS/xa+DbgFl=0x20"
    # 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"

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

    ARTADM SRVGRP=GRP01
    SRVID=10
    MIN=1 MAX=1
                   SEQUENCE=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
    SRVID=15
    CONV=Y
    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
    SRVID=20
    CONV=Y
    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"

    *SERVICES
    DEFAULT: SVCTIMEOUT=0 TRANTIME=80
    *ROUTING

    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
    525013 Newbie
    Currently Being Moderated
    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
    930136 Newbie
    Currently Being Moderated
    Hi,

    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.

    Sean
    Tuxedo ART Dev

    Edited by: user12432153 on 2012-4-12 上午1:08
  • 5. Re: Only one instance of my transaction works - CICS ART
    525013 Newbie
    Currently Being Moderated
    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?

    Thanks,
  • 6. Re: Only one instance of my transaction works - CICS ART
    930136 Newbie
    Currently Being Moderated
    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.

    Sean
    Tuxedo ART Dev

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points