Automatic front-end startup
This section describes how to start a graphical front-end automatically when the runtime system and the front-end reside on the same computer.
When a program starts in graphical mode, the runtime system tries to open a connection to the graphical front-end set by the FGLSERVER environment variable. This requires having the front-end already started and listening to the TCP port specified by FGLSERVER.
In some configurations, such as X11 workstations or METAFRAME/Citrix Winframe or Microsoft™ Windows® Terminal Server, each user may want to start his own front-end to have a dedicated process. This can be done by starting the front-end automatically when the program executes, based on settings in the DISPLAY (X11) or SESSIONNAME/CLIENTNAME (WTSE) environment variables.
Automatic front-end startup settings are defined with
gui.server.autostart.*
entries in FGLPROFILE. In these FGLPROFILE entries, the term
"GUI server" refers to the graphical front end.
In a first time, the runtime system tries to establish the connection without starting
the front-end (in a normal usage, it is already started). The front-end is identified by the
FGLSERVER environment variable. If FGLSERVER is not defined, it defaults to
localhost:0
, except if gui.server.autostart.wsmap
entries are
defined in FGLPROFILE. When wsmap
entries are defined, workstation id to GUI server
id mapping takes place and FGLSERVER defaults to localhost:n
, where n is the GUI
server number found from wsmap
entries.
If this first connection fails and the gui.server.autostart.cmd
entry is
defined, the runtime system executes the command to start the GUI server, then waits for n seconds
as defined by gui.server.autostart.wait
entry, and after this delay tries to
connect to the front-end. If the connection fails, it tries again for a number of attempts defined
by the gui.server.autostart.repeat
entry. Finally, if the last attempt fails, the
runtime system stops with a GUI connection error -6300.
If the gui.server.autostart.cmd
entry is not defined, neither
workstation id to GUI id mapping, nor automatic front-end startup is done.
Here is a detailed description of each gui.server.autostart
FGLPROFILE
entry:
The cmd
entry is used to define the command to be executed to start the
front-end:
gui.server.autostart.cmd = "/opt/app/gdc-2.30/bin/gdc -p %d -q -M"
Here, %d
will be replaced by the TCP port the front-end must listen
to.
By default the runtime system waits for two seconds before it tries to connect to the front-end. You can change this delay with the wait entry:
gui.server.autostart.wait = 5 -- wait five seconds
The runtime system tries to connect to the front-end ten times. You can change this with
the repeat
entry:
gui.server.autostart.repeat = 3 -- repeat three times
The following FGLPROFILE entries can be used to define workstation id to front-end id mapping:
gui.server.autostart.wsmap.max = 3
gui.server.autostart.wsmap.0.names = "fox:1.0,fox.sxb.4js.com:1.0"
gui.server.autostart.wsmap.1.names = "wolf:1.0,wolf.sxb.4js.com:1.0"
gui.server.autostart.wsmap.2.names = "wolf:2.0,wolf.sxb.4js.com:2.0"
The first wsmap.max
entry defines the maximum number of front-end
identifiers to look for. The wsmap.N.names
entries define a mapping for
each GUI server, where N is the front-end identifier. The value of those entries
defines a comma-separated list of workstation names to match. If no wsmap entries are
defined, the GUI server number will default to zero.
For gui.server.autostart.wsmap
entries, the first GUI server number
starts at zero.
On X11 configurations, a workstation is identified by the DISPLAY environment variable.
In this example, fox:1.0
identifies a workstation that will make the
runtime start a front end with the number 1.
On Windows Terminal Server, the CLIENTNAME
environment variable identifies the workstation. If no corresponding front-end id can be found in
the wsmap
entries, the front-end number defaults to the id of the session defined
by the SESSIONNAME environment variable, plus one. The value of this variable has the form
protocol#id
; for example, RDP-Tcp#4
would
automatically define a front-end id of 5 (4+1).
If the front-end processes are started on the same machine as the runtime system, you do
not need to set the FGLSERVER environment variable. This will then default to
localhost:id
, where id will be detected from the
wsmap
workstation mapping entries.
If the front-end is executed on a middle-tier machine that is different from the
application server, MIDHOST for example, you can set FGLSERVER to MIDHOST without a GUI server id.
The workstation mapping will automatically find the id from the wsmap
settings.