❌ La debilidad de Jetty en entornos de desarrollo con JSP y NetBeans
Publicado por Esteban Guenul – julio 2025
Nota del autor: esta entrada está basada en una experiencia real mientras desarrollaba con JSPs en Jetty y NetBeans. El problema me obligó a reconsiderar mi flujo de trabajo.
En el desarrollo web con Java, muchas veces se prefiere Jetty por su ligereza, velocidad de arranque y flexibilidad modular. Sin embargo, cuando se trabaja con JSPs y un IDE como NetBeans, es importante conocer una de sus principales debilidades: Jetty no ofrece un soporte directo y fluido para JSP en entornos de desarrollo integrados como sí lo hace Tomcat.
🔍 ¿Qué problema presenta Jetty con JSP?
Cuando intentamos trabajar con páginas JSP directamente desde NetBeans usando Jetty como contenedor embebido o como servidor de ejecución, nos encontramos con:
- ❌ Falta de compilación automática de JSPs
- ❌ Sin integración IDE para visualizar cambios en tiempo real
- ❌ Errores de clase faltante o
ClassNotFoundException
al renderizar JSP - ❌ Necesidad de configurar manualmente módulos JSP en Jetty (
ee10-apache-jsp
,jsp
, etc.)
Mientras tanto, Tomcat maneja los JSPs sin mayor configuración y NetBeans puede desplegar directamente sobre él.
🧰 ¿Qué alternativas hay?
1. Usar Tomcat para desarrollo y Jetty para producción
Una solución pragmática es usar Tomcat como contenedor durante el desarrollo para aprovechar su integración con NetBeans, y luego desplegar en Jetty en producción. Esto requiere que tu aplicación esté empaquetada como WAR y que tu código JSP no tenga dependencias específicas de Tomcat.
2. Evitar JSP: usar Thymeleaf u otras plantillas
Otra solución, más moderna, es usar un motor de plantillas como Thymeleaf, que no depende de la infraestructura JSP ni del compilador Jasper. Esto permite trabajar fácilmente con Jetty, incluso embebido, sin necesidad de módulos extras.
Ejemplo simple en un servlet:
Context context = new Context();
context.setVariable("mensaje", "Hola Jetty sin JSP!");
String html = templateEngine.process("plantilla", context);
response.getWriter().write(html);
Esto se renderiza igual que un JSP, pero sin necesidad del compilador JSP ni configuraciones complejas.
3. Configurar Jetty por fuera del IDE
Si insistes en usar JSP con Jetty, deberás configurarlo por fuera del IDE:
- Crear un
start.ini
con los módulos requeridos (jsp
,servlet
,annotations
, etc.) - Usar el
jetty-distribution
oficial - Agregar los JARs de
apache-jsp
yecj
(Eclipse Compiler for Java) - Usar el comando
java -jar start.jar
o un script de arranque personalizado
Esto te aleja del desarrollo "en caliente" que normalmente ofrece NetBeans, por lo que no es lo ideal en etapa de desarrollo.
✅ Conclusión
Jetty es una excelente opción para producción, especialmente cuando buscas un contenedor embebido liviano. Pero cuando se trata de trabajar con JSPs y NetBeans, su falta de integración directa con el IDE lo convierte en una opción poco amigable para el desarrollo ágil.
Mi recomendación:
- ☑ Usa Tomcat si necesitas JSPs y una experiencia de desarrollo fluida.
- ☑ Usa Jetty con motores de plantilla modernos como Thymeleaf.
- ☑ Y si quieres lo mejor de ambos mundos, separa backend (API) de frontend (HTML o SPA).
¿Te pasó lo mismo?
¿Tienes otra forma de trabajar con JSPs y Jetty?
Déjalo en los comentarios. 👇
Comentarios
Publicar un comentario