Chapter 4. Using Persistent CGI Programs
Overview of Persistent CGI .........81
Named Activation Groups ........81
Accept-HTSession CGI Header .......81
HTTimeoutCGIHeader.........82
Considerations for using Persistent CGI
Programs..............82
Persistent CGI Program Example ......83

Overview of Persistent CGI

Persistent CGI is an extension to the CGI interface that allows a CGI program to
remain active across multiple browser requests and maintain a session with that
browser client. This allows files to be left open, the state to be maintained, and
long running database transactions to be committed or rolled-back based on
end-user input. The AS/400 CGI program must be written using named activation
groups which allows the program to remain active after returning to the server.
The CGI program notifies the server it wants to remain persistent using the
Accept-HTSessionCGI header as the first header it returns. This header defines
the session ID associated with this instance of the CGI program and is not returned
to the browser. Subsequent URL requeststo this program must contain the session
ID as the first parameter after the program name. The server uses this ID to route
the request to that specific instance of the CGI program. The CGI program should
regenerate this session ID for each request. It is strongly recommended that you
use Secure Sockets Layer (SSL) for persistent and secure business transaction
processing.

Named Activation Groups

CGI programs can be built using named activation groups by specifying a name on
the ACTGRP parameter of the CRTPGM or CRTSRVPGMcommands. In doing this,
the initial call to the program within the job will still have the startup cost of
activating the program. However, an activation group is left active after the
program has exited normally.All storage associated with that program is still
allocated and in last-usedstate. The program is not initializated when it is called
again. In addition, for the ILE C runtime, all settings are in last-usedstate, such
as signal(), strtok(). The RCLACTGRP command is used to end a named activation
group. Use the DSPJOB OPTION(*ACTGRP) command to display all the activation
groups for the job. All ILE languages running on AS/400 can use this mechanism
to enable persistence for their CGI programs.
For additional information about activation groups see, ILE Concepts, SC41-5606
book.

Accept-HTSession CGI Header

This header specifies the session handle associated with this instance of the
Persistent CGI program. This session handle is used to route back subsequent
requests to that program and must be unique, or the server will not honor the
persistence request. A message is logged in the error log of the server.
Accept-HTSession = "Accept-HTSession" ":" handle
When the server receives this header, the CGI job servicing the request will be
reserved in a persistent state. Only requests coming in with that session handle in
the URL are routed back to that instance of the CGI program. The URL must be in
the following format:
© Copyright IBM Corp. 1997, 2000 81