2009-06-12 12 views
8

He creado una aplicación web usando Java, Struts y ejecutando Apache Server y Tomcat. Sería muy útil poder reiniciar la aplicación desde la web. No quiero reiniciar Tomcat, solo esta aplicación web, de la misma manera que lo hace Tomcat Manager.¿Iniciar/detener una aplicación web desde sí mismo?

¿Sabes cómo puedo hacerlo? Si no, ¿hay alguna manera de simular ese comportamiento (volver a cargar config.properties, realizar el proceso de inicio de Hibernate, etc.)?

Muchas gracias.

+0

Puede encontrar [este] (http://p2p.wrox.com/servlets/40311-tomcat-restart-only-one-application.html) enlace para que sea útil. –

Respuesta

5

Eché un vistazo rápido al código fuente del Tomcat Manager. Parece que hay una clase que es parte de la fuente de Tomcat llamada "Servlet del contenedor". De los javadocs:

Un ContainerServlet es un servlet que tiene acceso a la funcionalidad interna Catalina, y se carga desde el cargador de clases Catalina en lugar de la web cargador de clases de la aplicación.

Un ContainerServlet automáticamente se pasó un contenedor que se puede utilizar para obtener el Contexto e implementador - y el implementador tiene métodos útiles, como start(String contextPath)stop(String contextPath) y que va a hacer lo que quiera.

Entonces, lo que creo que debería hacer es escribir su propio servlet heredado de ContainerServlet, y configurar Tomcat para cargar su servlet usando el cargador de clases Catalina (mire cómo está configurado el Administrador para ver cómo). Tenga en cuenta que probablemente esta no sea una opción para usted en un entorno alojado.

Luego su servlet podría tener, por ejemplo, un botón que presione para volver a cargar la aplicación. Recomiendo poner protección con contraseña de algún tipo delante de eso. :)

1

Tomcat Manager ofrece una interfaz http para iniciar/detener una aplicación y otras tareas. Hay Ant tasks que puede usar para acceder fácilmente a estas operaciones.

2

simplemente pulse el URL

http://<username>:<password>@<hostname>:<port>/manager/stop?path=/<context path> 

parar y

http://<username>:<password>@<hostname>:<port>/manager/start?path=/<context path> 

a empezar. Eso te simula usando la aplicación de administrador.

+0

Desde Tomcat 7 tienes que usar 'manager/text' en lugar de' manager'. – lazlev

Cuestiones relacionadas