Saltar al contenido principal

Jetty

Abrir en ChatGPT

El plugin Maven Jetty ejecuta la aplicación en un servidor Jetty embebido directamente desde el proyecto. Un proyecto arquetipo establece compile webforj:watch jetty:run como su objetivo Maven predeterminado, por lo que mvn sin argumentos compila la aplicación, inicia el frontend watch y sirve la aplicación en Jetty.

Requisitos

Un proyecto Jetty declara las herramientas de desarrollo por sí mismo, en el perfil utilizado para las ejecuciones de desarrollo:

pom.xml
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-devtools</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>

La versión proviene del Bill of Materials (BOM) de webforJ. El perfil mantiene la dependencia fuera del war empaquetado. Un proyecto creado a partir de un arquetipo tiene este perfil.

Activar recarga en vivo

webforj.conf
webforj.devtools.livereload.enabled = true

Las claves son las mismas que una aplicación Spring Boot establece en application.properties, listadas en los ajustes.

Cambios en clases

Con una herramienta de hotswap configurada, la herramienta aplica los cambios en clases y Jetty no vuelve a desplegar nada. Dos propiedades de Jetty soportan esto, y un proyecto arquetipo establece ambas:

  • scan es 0, lo que desactiva el escaneo de archivos de Jetty.
  • deployMode permanece sin establecer. Hotswap requiere el modo forkeado, y el plugin lo selecciona. Un build que establece deployMode en otro valor comienza sin la herramienta y lo registra.

Sin una herramienta de hotswap, se debe establecer scan en un intervalo en segundos y Jetty vuelve a desplegar la aplicación cuando las clases compiladas o los recursos cambian:

PropiedadDescripciónPredeterminado
scanIntervalo en segundos entre escaneos de la salida compilada, establecido como la propiedad jetty.scan. 0 desactiva el escaneo. Intervalos más largos reducen la carga y retrasan el redepliegue.1

Consideraciones de uso

  • Memoria y CPU: valores bajos de scan aumentan el consumo de recursos en proyectos grandes. Intervalos más largos lo reducen y retrasan el redepliegue.
  • Solo desarrollo: el plugin Jetty no es para despliegues en producción.
  • Sesiones: un redepliegue puede eliminar sesiones de usuario. Una herramienta de hotswap aplica cambios sin un redepliegue, y la sesión sobrevive.