mundo - java web eclipse
¿Diferencia entre un servidor de aplicaciones y un contenedor de servlets? (5)
Básicamente, un servidor de aplicaciones en el contexto de Java EE es un software instalado en un servidor 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 applet,
- Contenedor de cliente de aplicación
- Contenedor web, y
- Contenedor EJB.
Dos contenedores son parte del servidor de aplicaciones (EJB y contenedor web) y otros dos son parte de la computadora 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 del servlet no es la expresión adecuada para Tomcat y Jetty calificados porque es más restrictivo. Tomcat también puede ejecutar JSP y JSF, no solo Servlets.
Estoy intentando comprender la diferencia entre un servidor de aplicaciones completo (por ejemplo, Weblogic, JBoss, etc.) y un contenedor de servlets (Tomcat, Jetty, etc.).
¿Cómo difieren y cuándo usar cuál?
Gracias,
En términos Layman: Un servidor web significa: Manejo de solicitudes HTTP (generalmente desde navegadores).
Un contenedor Servlet (por ejemplo, Tomcat) significa: Puede manejar servlets y JSP.
Un servidor de aplicaciones (por ejemplo, GlassFish) significa: * Puede gestionar aplicaciones Java EE (normalmente tanto servlet / JSP como EJB).
Para un principiante, es mejor quedarse con un contenedor de servlets simple.
En términos generales, un contenedor de servlet se restringe más o menos a la implementación de la especificación del 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 completamente desarrollado implementa toda la pila J2EE; Además, viene con todas las herramientas empresariales y posibilidades de integración. Un servidor de aplicaciones generalmente tiene interfaces de administración avanzadas, admite clustering y otras características utilizadas principalmente en el desarrollo de sistemas de alta gama.
Para un principiante, probablemente sea mejor quedarse con un contenedor de servlets simple, ya que la curva de aprendizaje allí es mucho menos pronunciada.
Editar
@Apache Fan: Depende de las características específicas 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 hace pesando los requisitos específicos contra el conocimiento de primera mano de los sistemas considerados.
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 de vendedores las veinticuatro horas del día? ¿Con qué tipo de entorno empresarial debería integrarse el sistema? ¿Son las tarifas de licencia un problema? ¿Alguna tecnología o herramienta imprescindible? Etc.
Sin saber lo anterior, se trata de disparar en la oscuridad.
Un contenedor de servlets solo admite la API de servlet (incluidos JSP, JSTL).
Un servidor de aplicaciones admite todo el 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 servlets, pero debe instalar una implementación independiente de la tecnología en particular.
afaik, websphere y jboss son completamente compatibles con j2ee-server que pueden ejecutarse más allá de los servlets, como EJB, mientras que Tomcat es solo un contenedor de servlets y no se pueden ejecutar EJB en él.