A web server waits for client HTTP requests. When these requests arrive, the server does what is needed to serve the requests by providing the necessary content.
Adding a servlet container alters this behavior. Now the web server needs also to:
- Load the servlet container adapter library and initialize it (prior to serving requests).
- When a request arrives, it needs to check and see if a certain request belongs to a servlet, if so it needs to let the adapter take the request and handle it.
The adapter needs to know what requests it is going to serve, usually based on some pattern in the request URL, and to where to direct these requests.
Things are more complex when the user wants to set a configuration that uses virtual hosts, or when they want multiple developers to work on the same web server but on different servlet container JVMs.