Sí, hay una manera de hacerlo, pero creo que todavía es específico de WebSphere. Tuvimos este mismo problema hace unos años, una aplicación que requería mucha configuración todavía se mostraría como iniciada, incluso cuando se produjo un error importante. La única forma de saberlo era mirar el archivo de registro y ver si se había producido alguna excepción (y la interfaz de usuario web no funcionaba muy bien).
La forma estándar de manejar el ciclo de vida, que parece funcionar en la mayoría de los contenedores, es el ServletContextListener pero, como han descubierto, no existe una manera elegante de manejar los errores de arranque.
En WebSphere (para algunas versiones de todos modos) existe el concepto de un bean de inicio. En lugar de tratar de explicarlo en detalle como lo fue hace un par de años que hice esto, puede echar un vistazo a este enlace http://publib.boulder.ibm.com/inforcenter...
En esencia, esto le permite crear un bean EJB que implementa dos métodos:
public boolean start() {
return new Delegate().start();
}
public void stop() {
new Delegate().stop();
}
Si devuelve true desde el método de inicio devuelve un inicio exitoso; de lo contrario, devolver false detiene la aplicación, por lo que en la consola la aplicación indicará que no se pudo iniciar. Implementamos un delegado para que hiciera el trabajo para poder conectarlo al bean de inicio o a ServletContextListener si el contenedor no implementaba beans de inicio.
Lo único adicional con beans de inicio es que en WebSphere debe habilitar el servicio de beans de inicio en la consola administrativa o de lo contrario no se ejecutarán y su aplicación no realizará ninguna inicialización, pero se mostrará como iniciada cuando Intenta y comienza. Hay información sobre cómo hacerlo desde la página anterior.
También estoy seguro de que hay información más detallada en un IBM Redbook sobre esto, pero por el momento parece que no puedo encontrarlo.
Posible duplicado - http://stackoverflow.com/questions/272194/abort-java-webapp-on-startup –