2011-12-27 12 views
6

Estoy lanzando una instancia de Jetty incrustada que contiene una sola aplicación web. La aplicación web se inicia en la puesta en marcha. Me gustaría saber cómo detectar si el contexto de WebappInicializado arroja una excepción.Jetty: detectar si Webapp no ​​pudo iniciarse

Cuando la aplicación web arroja una excepción, Server.start() no y server.isRunning() devuelve verdadero. ¿Hay alguna manera de escuchar las excepciones de webapp desde fuera del contenedor?

Respuesta

5

Respondiendo a mi propia pregunta.

La configuración WebAppContext.setThrowUnavailableOnStartupException(true) hace que el servidor propague cualquier excepción de webapp a Server.start(). Supongo que también se podría invocar WebAppContext.isFailed() después del inicio del servidor para verificar contextos individuales.

+0

En el método Jetty 9 'WebAppContext.setThrowUnavailableOnStartupException (true)', pero puede verificar si webapp está disponible con 'webappContext.isAvailable()' y el posible error al iniciar con 'webappContext.getUnavailableException()'. – reap

+0

org.eclipse.jetty.deploy.DeploymentManager requestAppGoal método no vuelve a lanzar la excepción, simplemente registra el seguimiento de pila de excepción generado por org.eclipse.jetty.webappWebAppContext.java.doStart(). Entonces, ¿cómo puede propagarse a Server.start()? – quintin

4

Me tropecé con esto tratando de hacer que esto funcione para una solución no integrada . En caso de que alguien está en un barco similar, la solución para este caso es crear WEB-INF/jetty-env.xml con el siguiente contenido:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Set name="throwUnavailableOnStartupException">true</Set> 
</Configure> 

El servidor fallará el inicio de una excepción como se esperaba.

+0

Nota: esa DTD no es válida para Jetty 9.3+. –

Cuestiones relacionadas