## 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.

Ozito