Chapter 3 Introduction to Servlet Programming
Introduction
The servlet interface is designed to make creating Web applications an easy and intuitive process. This chapter explains the process of creating a servlet and presents the code for a simple servlet.
The servlet described in this section is included in the files HelloWorldExample.h and HelloWorldExample.cpp in the examples\servlet directory of the HydraExpress installation. The servlet itself is available at http://localhost:8090/examples/HelloWorldExample on a system running HydraExpress.
Creating and deploying a servlet involves the following steps:
• Define the servlet by using the
RWSF_DEFINE_SERVLET macro within a single source file (
“Defining the Servlet” )
• If the servlet resides in a new context, configure any external Web servers to forward requests to the new context.
“Forward Requests From a Web Server” describes the process of reconfiguring the Web server.
Servlet Initialization and Destruction
At Agent startup, the Agent instantiates the servlet, and then calls the init() method on the servlet. Each time a client request arrives, the Agent calls a handler method on the servlet. Before the Agent shuts down, it calls the destroy() method on the servlet.
A servlet acquires resources through the init() method and releases resources in the destroy() method. The Agent always calls init() before forwarding requests to the servlet and always calls destroy() when the servlet is removed from service. However, because the servlet is instantiated at Agent startup, the Agent may construct the servlet before an incoming request invokes it. Further, the Agent may take the servlet out of service long before the servlet is destroyed. A servlet can take advantage of this situation by deferring resource acquisition until the Agent calls init() and releasing resources as soon as the Agent calls destroy().