¿Cuáles son las ventajas de crear una pequeña aplicación web Java para que se ejecute en un contenedor Servlet (como Tomcat) o crear una aplicación Java independiente con un servidor web integrado y en ejecución? ¿Está detrás de un proxy inverso?Aplicación web Java en un contenedor Servlet vs. versión independiente
He estado jugando con Java durante aproximadamente un año. Me di cuenta de que lanzar Tomcat lleva tiempo, y no siempre es posible realizar una reimplantación en caliente debido a problemas con el cargador de clases. La API de Servlet me parece algo intrincada, especialmente desde la perspectiva de la configuración y del diseño REST (que en realidad no es totalmente compatible).
Por otro lado, he notado que mi IDE puede compilar y ejecutar una aplicación independiente a la velocidad del rayo. Configurar Apache para proxies inversos es pan comido, y Jetty integrado parece manejar todo lo que puedo lanzar. No necesito Servlets cuando puedo usar Restlet, Wicket, etc. Ser capaz de saber mejor cómo funciona mi aplicación (porque no está integrado con un gran servidor de aplicaciones) se siente habilitante. Los rastros de pila son más cortos. El tamaño de descarga es más pequeño. La configuración del usuario final es más fácil. Supongo que es probable que el rendimiento sea mejor porque hay menos capas de software involucradas.
Sin embargo, me recuerda el dicho de que suena demasiado bueno para ser verdad. Entonces mi pregunta es, ¿por qué no quiero hacer que mis aplicaciones web sean independientes? ¿Qué me proporciona un contenedor Servlet y/o mis usuarios finales que realmente necesitamos pero que desconocemos?