Servlet container - Navajo
The servlet container is the core component of the nevisProxy. From a runtime point of view, it is an Apache web server with one custom module. In the following, the term 'carrier server' will be used for the respective Apache web server. The container performs the following tasks:
- Management of the runtime environment, i.e., processes/threads and IO handling (using Apache)
- Parsing of web.xml and loading of filters/servlets
- Handling of incoming HTTP and HTTPS requests (using mod_ssl)
- Mapping of incoming HTTP requests to the configured filters/servlets
For more details on the workings of a servlet container, refer to the Servlet 2.3 Specification.
Boot process
With regard to the configuration, the boot process of nevisProxy is of interest:
- nevisProxy is started.
- navajo.xml is parsed.
- The configured web.xml files are parsed and the configured filters/servlets are loaded and initialized.
- The Apache configuration is generated and written to a file.
- The Apache web server is started using the generated configuration file.
- nevisProxy is ready to process requests.
Because of the fact that the configuration file is created at boot time, the Apache version used does not affect the configuration. Another point is that the complexity of the Apache configuration is kept away from the user.
Runtime model
From a technical point of view, nevisProxy is an Apache web server with one custom module. The runtime model is therefore given by the Apache server 2.4. The 'MultiProcessingModule event' has been chosen. The generated Apache configuration ensures that the model is single-processed/multi-threaded.
As nevisProxy is customized to be used as a web proxy, it is deployed with a minimal set of modules. It is possible to manually install and use other Apache modules if required. For details see the ApacheConfigFilter and the Optional Apache Modules chapters. In the chapter that follows, we will describe the various components of the nevisProxy servlet container and their configuration:
- The tags Service, Core, Timer, and Server are used to configure the overall behavior of nevisProxy. Their attributes are described in the chapter Server configuration.
- The TCP/IP and the TLS properties of nevisProxy frontend are described in the chapter Frontend connectors.
- The virtual host settings and configuration of web applications will be described in the chapter Virtual hosts.
Introductory notes
It is assumed that the reader is familiar with XML basics (such as schemas and DTDs, order sensitivity of elements, etc.). In the descriptions that follow, the parameter name specified at nevisProxy installation will be used for the respective value, i.e. <spool_dir>
is used for the path to the spool directory. Optional
means that the respective parameter does not have to be configured. If no value is specified, the respective default value is used. See the data type definition file in DTDs for nevisProxy Configuration Files, for an overall view of data types. In the installation, the data definition file is to be found in /opt/nevisproxy/dtd/navajo_1_0.dtd
. The servlet container configuration, generated in accordance with the data type definitions in navajo_1_0.dtd, is stored in the navajo.xml file.