Inicializar un Servlet
El método init proporcionado por la clase HttpServlet
inicializa el servlet y graba la inicialización. Para hacer una inicialización específica de
nuestro servlet, debemos sobreescribir el método init siguiendo estas reglas.
- Si ocurre un error que haga que el servlet no pueda manejar peticiones de cliente, lanzar una
UnavailableException.
Un jemplo de este tipo de error es la imposibilidad de establecer una conexión requerida.
- No llamar al método System.exit.
- Guardar el parámetro ServletConfig para que el método
getServletConfig pueda devolver su valor.
La forma más sencilla de hacer esto es hacer que el nuevo método init llame a
super.init. Si grabamos el objeto nosotros mismos, debemos sobreescribir el
método getServletConfig para devolver el objeto desde su nueva posición.
Aquí hay un ejemplo del método init.
public class BookDBServlet ... {
private BookstoreDB books;
public void init(ServletConfig config) throws ServletException {
// Store the ServletConfig object and log the initialization
super.init(config);
// Load the database to prepare for requests
books = new BookstoreDB();
}
...
}
El método init es bastante sencillo: llama al método
super.init para manejar el objeto ServletConfig y grabar la inicialización, y
seleccionar un campo privado.
Si el BookDBServlet utilizará una base de datos real, en vez de similarla con un objeto, el método
init sería más complejo. Aquí puedes ver el pseudo-código de como podría ser
ese método init.
public class BookDBServlet ... {
public void init(ServletConfig config) throws ServletException {
// Store the ServletConfig object and log the initialization
super.init(config);
// Open a database connection to prepare for requests
try {
databaseUrl = getInitParameter("databaseUrl");
... // get user and password parameters the same way
connection = DriverManager.getConnection(databaseUrl,
user, password);
} catch(Exception e) {
throw new UnavailableException (this,
"Could not open a connection to the database");
}
}
...
}
Parámetros de Inicialización
Le segunda versión del método init llama al método
getInitParameter. Este método toma el nombre del parámetro como argumento y devuelve un
String que representa su valor.
(La especificación de parámetros de inicialización es específica del servidor. Por ejemplo, los
parámetros son específicados como una propiedad cuando un servlet se ejecuta con el ServletRunner.
La página
La Utilidad servletrunner
contiene una explicación general de las propiedades y cómo crearlas).
Si por alguna razón, necesitamos obtener los nombres de los parámetros, podemos utilizar el método
getParameterNames.