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)
- Association of incoming HTTP/HTTPS requests using an TLS session or cookie cache with a previously established container session
- 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, available from Sun. 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. Reinitialisation If only changes in one of the web.xml files are made, it is possible to avoid a complete restart of the server, by sending nevisProxy a signal for doing a graceful restart. Keep in mind that on a graceful restart all pending requests (of the dying process) have to be handled before the new requests (of the new process) can be handled. This may cause problems if you have slow back ends or big downloads. A graceful restart can take several minutes in such cases. 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.2. The 'MultiProcessingModule worker' 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 chapter ApacheServlet.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 front end are described in the chapter Front-end 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 220.127.116.11 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.