Server Executables
The OpenROAD Server uses the following executable files:
ORASO.EXE
The OpenROAD Server executable (ASO) provides the basic server process. It creates an execution environment for the initiated OpenROAD application image, and it runs the 4GL calls that come from the client.
When an ASO is launched directly by a client, it runs as a private server and responds only to that single client. When that client releases its connection, the private server process is terminated.
ORSPO.EXE
The OpenROAD Server Pooler executable (SPO) provides the shared server capability. It enables multiple clients to share one or more ASO processes.
When an ASO is launched by the SPO, it becomes a shared server and can respond (indirectly through the SPO) to requests from several of the SPO's clients. ASO processes managed by the SPO are referred to as slaves of the SPO. The SPO is a multithreaded server that creates and manages this shared pool of ASO slave processes. It multiplexes 4GL calls from its clients, forwarding them to an available ASO slave process. The SPO creates and destroys ASO slaves as needed to adapt to changing client loads.
ORSPOSVC.EXE
The ORSPOSVC executable runs as a Windows service, implementing the service named "OpenROAD Service." This service creates a nominal client for the SPO, causing the SPO to be launched when the ORSPOSVC starts, and ensuring that the SPO continues running as long as the ORSPOSVC is running. This allows the SPO to respond quickly when real clients arrive.
Stopping the ORSPOSVC forces the SPO to shut down, regardless of whether other clients are still connected to it. Calls already in process are given a grace period to complete, while all further calls from clients are refused. The SPO terminates as soon as all its ASO slaves have finished processing their current calls, or when the grace period expires—whichever comes sooner.
The ShutdownGracePeriod value can be set in the Visual OSA SPO configuration options; it defaults to 15 seconds. If a call does not complete within the grace period, the ASO processing that call is disconnected, and the SPO terminates. When a disconnected ASO finally completes the call, the ByRef results are discarded and the ASO begins a normal shutdown sequence.