Si hallas algún fallo con tu código o trabajo, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.
Solución:
Un contenedor de servlet solo admite la API de servlet (incluidos JSP, JSTL).
Un servidor de aplicaciones admite todo JavaEE: EJB, JMS, CDI, JTA, la API de servlet (incluidos JSP, JSTL), etc.
Es posible ejecutar la mayoría de las tecnologías JavaEE en un contenedor de servlet, pero debe instalar una implementación independiente de la tecnología en particular.
En términos generales, un contenedor de servlet se restringe más o menos a la implementación de la especificación de servlet J2EE. Además, se centra en el entorno de tiempo de ejecución y no tanto en proporcionar herramientas adicionales.
Por el contrario, un servidor de aplicaciones completo implementa toda la pila J2EE; además viene con todas las herramientas empresariales y posibilidades de integración. Un servidor de aplicaciones suele tener interfaces de administración avanzadas, admite la agrupación en clústeres y otras funciones que se utilizan principalmente en el desarrollo de sistemas de gama alta.
Para un principiante, probablemente sea mejor quedarse con un contenedor de servlet simple, ya que la curva de aprendizaje allí es mucho menos pronunciada.
Editar
@Apache Fan: Depende de los detalles de su situación, como los sistemas existentes y los planes futuros, entre otras cosas. No creo que un enfoque de diagrama de flujo genérico sea aplicable aquí.
La selección de la plataforma generalmente se realiza sopesando los requisitos específicos contra el conocimiento de primera mano de los sistemas bajo consideración.
Sin embargo, la pregunta no da pistas sobre cuáles son los criterios de evaluación. ¿Debería ser de código abierto? ¿Es necesario el soporte del proveedor las 24 horas? ¿Con qué tipo de entorno empresarial debe integrarse el sistema? ¿Son los derechos de licencia un problema? ¿Alguna tecnología o herramienta imprescindible? Etc.
Sin saber lo anterior, es más o menos disparar en la oscuridad.
Básicamente un servidor de aplicaciones en contexto Java EE es un software instalado en un servidor y que implementa una especificación Java EE (Java EE 7 por ejemplo). Eso significa que dicho software (servidor de aplicaciones) debe poder ejecutar la aplicación Java EE.
Java EE define 4 dominios, los llamados contenedores:
- contenedor de miniaplicaciones,
- Contenedor de cliente de aplicación,
- Contenedor web y
- contenedor EJB.
Dos contenedores forman parte del servidor de aplicaciones (contenedor EJB y Web) y otros dos forman parte del ordenador-cliente.
JBoss y Weblogic son servidores de aplicaciones, Tomcat y Jetty son contenedores web. Es por eso que JBoss y Weblogic pueden manejar más tecnologías que un contenedor web. El servidor de aplicaciones puede administrar EJB.
El contenedor de servlet no es la expresión adecuada a Tomcat y Jetty calificados porque es más restrictivo. Tomcat también puede ejecutar JSP y JSF, no solo Servlets.
Recuerda recomendar este post si te fue de ayuda.