FastCGI Process Launcher

To use the CGIServlet in FastCGI mode there will need to be a FastCGI server process running somewhere, listening for FastCGI requests.

The FastCGILauncher is a ServletContextListener that will start and stop an external process. It will also monitor the process and restart it when it stops.


The FastCGILauncher is configured through context-params with names beginning with "FCGI_Launcher.[name]" where [name] is a way to relate parameters for a particular process to start. In this way the launcher can manage multiple processes.

  • FCGI_Launcher.[name].command

    The command to exec. This will be split into process arguments by whitespace. There is no quoting.

  • FCGI_Launcher.[name].restartDelay

    Time in milliseconds to delay between exit and restarting. Only applies if the process exits within this period after starting.

  • FCGI_Launcher.[name].redirectSTDERR

    true/false. Default true. The output of the process will be logged by its own thread. If this is false a separate thread will be used to handle stderr output.

  • FCGI_Launcher.[name].env.ENVIRONMENT_VAR

    param will be passed as the value for ENVIRONMENT_VAR in the process environment.


The example below starts up a php fastcgi server on port 7543, it also passes the environment variable PHP_FCGI_MAX_REQUESTS, which causes the php process to exit after 1000 requests. The FCGI_Launcher watchdog will restart it immediately.

    <!-- ================================================================= -->
    <!-- Run PHP in FastCGI mode and make sure it keeps running            -->    
    <!-- ================================================================= -->

                <param-value>/usr/bin/php-cgi -b localhost:7543</param-value>

See also the FastCGILauncher javadoc for usage info.