Un jemplo de este tipo de error es la imposibilidad de establecer una conexión requerida.
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");
}
}
...
}
(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.