2010-09-09 4 views
11

Quiero inicializar una instancia global de una clase antes de que mi servidor Tomcat complete el inicio y comience a ofrecer mis servlets. Si este servicio de alguna manera falla la inicialización, me gustaría que toda la secuencia de inicio también falle (o tan cerca de esto como sea posible; de ​​lo contrario, no tendría sentido que el servidor se ejecute). ¿Cuál es la mejor manera de lograr esto?¿Existe alguna forma de ejecutar código durante el arranque de Apache Tomcat 6.x para realizar rutinas de inicialización, etc.?

Respuesta

18

Cada aplicación web tiene asociado un ServletContext. El objeto ServletContext se crea cuando la aplicación se inicia y se destruye cuando la aplicación se apaga. Un ServletContext tiene un alcance global y es similar a una variable global en una aplicación.

http://www.javabeat.net/tips/178-servletcontextlistener-example.html

explicación completa aquí

http://onjava.com/pub/a/onjava/2001/04/12/listeners.html

+0

Eso es lo que necesitaba. Gracias por la ayuda rápida y concisa! – NBJack

+2

puede marcar la respuesta como aceptada? Ayudará a que otros respondan cuando solicite –

2

Una cosa que puede hacer de forma portátil es implementar un servlet que inicializa todo lo necesario en su método init() (y tal vez llamar System.exit() si falla, no sé si tienes permiso para hacer esto en Tomcat). Luego la cargará usando <load-on-startup> en su web.xml para especificar el orden de inicialización.

+0

No es una buena solución. Todos los filtros se inicializan antes de todos los servlets. Entonces los filtros se inicializarían antes de la inicialización si la clase en la pregunta. –

Cuestiones relacionadas