Genero front-ends and license counting

Information about how runtime licenses are consumed that may help you use licenses as efficiently as possible.

A Genero license is not consumed at the MAIN statement of the application, but as soon as there is a user interface instruction in the code. This can be an instruction to open a window or form, to set an OPTIONS attribute, to display a menu, and so on.

If there is no UI instruction in the application, no license is consumed, even if it connects to a client. For example, no license is consumed if the application simply runs reports, accesses databases, completes file transfers, or makes front-end function calls.

TUI applications (applications run in text mode using a text-based user interface) and GUI applications (applications that use the Genero front-ends) have the same requirements for licenses.

There are licensing considerations specific to Web services and to the front-ends. These considerations are detailed in the following sections.

GDC applications

For Genero Desktop Client (GDC) applications, one license is consumed per GDC process. For example, if you have multiple GDC clients started on one machine, and each GDC client runs one or more applications, one license will be used per GDC.

To summarize: For each GDC that is running applications, no matter how many applications are running from this client, one license is consumed.

Web applications

For Genero Browser Client (GBC) applications, one license is consumed per application started. No additional licenses are consumed when an application is started by a RUN or a RUN WITHOUT WAITING request.

In the event that the user refreshes a browser page running a GBC application (regardless of whether it is the first application started or one started by RUN), the app is restarted.

In terms of licenses used, refreshing the browser consumes a new license. But as the first license is no longer active, it is only a matter of time before the DVM times out on the server and the license is released. See the section Freeing up licenses in this page.

DVM license use with RUN

When a user requests an application, the dispatcher starts a DVM to handle the request. It is the DVM that consumes a license. For example, one license is used when an application is started from a user agent. If within this application, a RUN or a RUN WITHOUT WAITING is executed, the same license is used, even if the first user agent opens new user agents.

If, however, an application is started in another user agent without RUN or RUN WITHOUT WAITING, a new license is used.

Web services

For Web service applications, one license is consumed per service started.

Genero Web service DVMs are managed in a pool by the GAS. Unlike application DVMs, the license is bound to the Web service process id. If a new child process is started, an additional license is consumed.

You can control the maximum number of licenses consumed by a Web service by configuring its MAX_AVAILABLE pool element. If the number of user requests exceeds what is available in the pool at any one time, the request will be queued (rather than blocked) until a DVM becomes available.

A Web service client does not consume a license. Users can make a request to a Web service server without needing a license.

Freeing up licenses

When a license is freed depends on how the application is exited. A license is freed when the applications closes, or to be more exact, when the DVM is shut down. If the user exits the application by clicking on the cancel or exit button, the DVM is shut down and the license is immediately freed.

If the user does not exit the application, but instead closes the user agent (browser), the DVM continues to run until the application times out (the number of seconds is set for the USER_AGENT timeout). After the timeout period passes, the proxy closes the connection to the DVM, the DVM shuts down, and the license is freed.

Checking licenses in use

To determine the number of licenses used, run the license controller command on the application server where the Genero runtime is installed. For example run:
fglWrt -u
Followed by:
fglWrt -a info users

Recommendations

It is recommended to size your runtime license number to the number of users anticipated to run your applications. Another solution is to use CPU licenses. For more information see the CPU licenses topic in the Genero Licensing manual.