Cómo lanzar aplicaciones web desde Maven con Jetty
1. Introducción
En adictosaltrabajo ya os hemos ido hablando de maven y os hemos enseñado su manera de trabajar, pequeños trucos, cómo desarrollar plugins, o cómo integrarlo en Eclipse. En este tutorial vamos a ver cómo lanzar aplicaciones web desde maven usando Jetty, que es un contenedor web al igual que lo es Tomcat.
La idea es conseguir algo tan sencillo como que con tan sólo un comando maven sea capaz de hacer andar nuestro proyecto, de tal modo que nosotros sólo tengamos que preocuparnos de abrir el navegador y ver nuestra aplicación en marcha. Ademas Jetty realiza cambios en caliente, con lo que podremos ver de manera instantánea cualquier cambio que realicemos en nuestro código sin necesidad de reiniciar nada. Podemos usarlo mientras desarrollamos y generar el war y desplegarlo en cualquier otro servidor cuando llegue el momento de pasar a producción.
Además no tendremos que descargalo ni instalarlo nosotros mismos, ya que maven se encarga de ello por nosotros.
Pero, ¿qué es Jetty exactamente?. Seguramente muchos de vosotros conozcais Tomcat. Pues bien, Jetty, en su versión 6, es otro contenedor web escrito en java que cumple las siguientes especificaciones:
- HTTP 1.1
- JSP 2.1
- SERVLET 2.5
Si vais a la página de Tomcat, vereis que en su versión 6 ambos contenedores cumplen las mismas especificaciones, lo que quiere decir que teóricamente una aplicación que funcione bajo esas especificaciones en Jetty funcionará tambien en Tomcat (o en cualquier otro que las cumpla)
2. Entorno
- Maven 2.0.8
- Jetty6
3. Configuración
Para poder hacer que maven arranque una aplicación web con Jetty necesitamos son dos cosas:
- que el proyecto utilice maven
- que el proyecto se empaquete como war. Esto es, en el pom.xml debemos tener lo siguiente:
war
Si estas condiciones se cumplen, solo deberemos configurar maven para que utilice el plugin de Jetty. Para ello, basta con meter lo siguiente en el pom.xml:
autentia-web org.mortbay.jetty maven-jetty-plugin 3
Donde:
- Estamos diciendo que la aplicación se llamará autentia-web, de tal modo que para acceder a ella iremos a la direccion http://localhost:8080/autentia-web
- Estamos configurando el plugin para que cada 3 segundos busque cambios en el código y haga el redespliegue en caliente si hiciera falta. Esto es, que cada 3 segundos mire a ver si se ha cambiado algo para cargar los cambios.
El plugin es muy configurable, si deseas ver los parámetros que puede recibir para ser configurado aqui tienes una lista:
http://www.mortbay.org/jetty-6/maven-plugin/run-mojo.html
Con estos sencillos pasos ya hemos configurado maven para que pueda arrancar nuestra aplicación web usando Jetty.
4. Instalación y ejecución
Para ejecutar la aplicación web tan sólo debeis ejecutar el siguiente comando desde consola:
mvn jetty:run
Si es la primera vez que lo ejecutais maven descargará a Jetty, lo instalará en el repositorio local, y tras eso ejecutará vuestra aplicación. Si no es la primera vez ejecutará la aplicación web sin volver a descargar a Jetty.
Una vez Jetty haya arrancado podreis ver la aplicación en marcha accediendo a la siguiente dirección:
http://localhost:8080/autentia-web
5. Conclusiones
Como veis este tutorial es muy breve, pero es que a no ser que tengais alguna particularidad y que os veais en la necesidad de configurar el plugin no hay mucho más que comentar. Personalmente considero muy cómodo y productivo el poder utilizar mi aplicación mediante un solo comando y poder ver los cambios a medida que los realizo sin hacer nada.
Espero que os sea de utilidad.
Una consulta, estoy probando jetty con maven y cada rato me sale en la consola java.lang.OutOfMemoryError: PermGen space … lo que hago es matar el proceso java, y lanzar nuevamente mi aplicacion .. esto quita tiempo, Que hay que agregar a la configuracion para solucionar esto?, y otra pregunta .. trabajo con struts y cuando edito el archivo struts-config.xml no me levanta el cambio … debo estar reiniciando jetty cada vez que edito un xml ?? .. Gracias
Muy bien , oye he tenido problemas al querer probar la APi Google Identity toolkit .baje los ejemplos con la client library para java , configure el maven y ejecute el comando mvn jetty:run pero me indica que no pudo encontrar plugin jetty y por lo tanto falla Que hago?Ç