Estoy tratando de entender la diferencia entre un servidor de aplicaciones completo (por ejemplo, Weblogic, JBoss, etc.) y un contenedor de servlets (Tomcat, Jetty, etc.).
¿En qué se diferencian y cuándo usar cuáles?
Gracias,
Estoy tratando de entender la diferencia entre un servidor de aplicaciones completo (por ejemplo, Weblogic, JBoss, etc.) y un contenedor de servlets (Tomcat, Jetty, etc.).
¿En qué se diferencian y cuándo usar cuáles?
Gracias,
Respuestas:
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 (incluidas 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.
En términos generales, un contenedor de servlets se limita más o menos a la implementación de la especificación de servlet J2EE. Además, se centra en el entorno 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 generalmente tiene 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 alta gama.
Para un principiante, probablemente sea mejor quedarse con un contenedor de servlets simple, ya que la curva de aprendizaje es mucho menos empinada.
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 aquí sea aplicable un enfoque de diagrama de flujo genérico.
La selección de la plataforma generalmente se realiza sopesando los requisitos específicos con el conocimiento de primera mano de los sistemas en 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 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, prácticamente se dispara en la oscuridad.
Básicamente, un servidor de aplicaciones en el contexto de Java EE es un software instalado en un servidor y que implementa una especificación de 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 :
Dos contenedores son parte del servidor de aplicaciones (EJB y contenedor web) y otros dos son parte del equipo cliente.
JBoss y Weblogic son servidores de aplicaciones, Tomcat y Jetty son contenedores web. Es por eso que JBoss y Weblogic pueden trabajar con más tecnologías que un contenedor web. El servidor de aplicaciones puede administrar EJB.
El contenedor de servlets 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.
afaik, websphere y jboss son un servidor j2ee totalmente compatible que puede ejecutarse más allá de los servlets, como EJB, mientras que Tomcat es solo un contenedor de servlets y no puede ejecutar EJB en él.
En términos simples: Un servidor web significa: Manejo de solicitudes HTTP (generalmente de navegadores).
Un contenedor de servlets (por ejemplo, Tomcat) significa: Puede manejar servlets y JSP.
Un servidor de aplicaciones (por ejemplo, GlassFish) significa: * Puede administrar aplicaciones Java EE (generalmente tanto servlet / JSP como EJB).
Para un principiante, probablemente sea mejor quedarse con un contenedor de servlet simple.