Contenedores Java EE vs Contenedores web
java-ee ejb (5)
Soy relativamente nuevo en Java EE / EJB, y he estado leyendo mucho sobre los contenedores Java EE. He tenido experiencia trabajando con un contenedor web (archivo WAR en jboss). También soy consciente de que Jboss también se puede usar como un contenedor Java EE.
Mi pregunta es, ¿cuál es la diferencia entre un contenedor Java EE y un contenedor web?
Sé que Java EE también puede contener un archivo .war. ¿Son diferentes y cuáles son sus diferencias? ¿Hay algún proveedor de preferencias específico que sea mejor?
Antes que nada, "J2EE" es una abreviatura obsoleta, ahora simplemente se llama "Java Enterprise Edition" o Java EE.
A diferencia del contenedor de servlets (por ejemplo, Tomcat), los servidores de aplicaciones Java EE "completos" también contienen un contenedor EJB. EJB son Enterprise Java Beans y puede leer mucho sobre ellos, por ejemplo here (capítulo IV). Los EJB ahora están en la versión 3.2 (Java EE 7 y Java EE 8), las versiones anteriores son 3.1 (Java EE 6) y 3.0 (Java EE 5); sin embargo, la mayor diferencia es entre v2 y v3.
Los EJB están diseñados para mantener una lógica comercial de su aplicación. Por ejemplo, bean de sesión sin estado puede calcular algo, o representar un servicio web o lo que sea que su aplicación necesite hacer. Los beans controlados por mensajes pueden escuchar en las colas de mensajes, por lo tanto, son útiles si desea una comunicación asincrónica. Los frijoles Singleton garantizan una instancia por frijol, etc.
En cuanto al tipo de archivo, EJB se empaqueta en un archivo .jar, la aplicación web en un archivo .war, y si desea mezclarlos en una sola aplicación, ese sería el archivo .ear ("archivo empresarial").
Además de los EJB, el servidor de aplicaciones "completo" también se ocupa de las transacciones, la seguridad, los recursos de JDBC ... Recomiendo encarecidamente usarlo en un contenedor de servlets, pero los beneficios vienen con la complejidad, por lo que deberá dedicar una cantidad razonable de tiempo para aprender a manejar, por ejemplo, Websphere ( Payara y WildFly son mucho más simples, y son mis favoritos). JBoss y Weblogic también son bastante populares, y si está familiarizado con Tomcat, eche un vistazo a TomEE .
Creo que tal vez la diferencia entre ellos son los protocolos que admiten.
Por ejemplo, no intentamos administrar la transacción en un contenedor web, como tomcat, generalmente tratamos de controlar en el web-proj que se implementó en tomcat. Mientras que el servidor web / app como ejb toma todo lo contrario.
El contenedor web y el contenedor EJB son subconjuntos de contenedores Java EE. Los contenedores Java EE también abarcan el contenedor del cliente de la aplicación y el contenedor del applet .
Esto es lo que dice el doc :
El proceso de implementación instala los componentes de la aplicación Java EE en los contenedores Java EE.
Servidor Java EE : la parte de tiempo de ejecución de un producto Java EE. Un servidor Java EE proporciona EJB [contenedor y contenedor web] *.
Contenedor Enterprise JavaBeans (EJB) : administra la ejecución de enterprise beans para aplicaciones Java EE. Enterprise beans y su contenedor se ejecutan en el servidor Java EE.
Contenedor web : gestiona la ejecución de la página JSP y los componentes del servlet para las aplicaciones Java EE. Los componentes web y sus
contenedor ejecutado en el servidor Java EE.Contenedor del cliente de la aplicación : gestiona la ejecución de los componentes del cliente de la aplicación. Los clientes de aplicaciones y sus contenedores se ejecutan en el cliente.
Contenedor de applet : gestiona la ejecución de applets. Consiste en un navegador web y un complemento de Java que se ejecutan en el cliente juntos.
* En el documento utilizan la forma plurial, pero en realidad solo tiene un contenedor web y un contenedor EJB por servidor Java EE.
Un contenedor EE de Java es una solución de servidor de aplicaciones que admite un contenedor web, EJB 3 y otras API y servicios Java EE, servidor Oracle WebLogic, servidor GlassFish, servidor de aplicaciones IBM WebSphere, servidor de aplicaciones JBoss y Caucho Resin son ejemplos de contenedores Java EE. .. Espero que responda tu consulta
Contenedor Java EE: administra la ejecución de EJB, JMS, JTA en el servidor Java EE, por ejemplo, JBoss, Glassfish.
Contenedor web: gestiona la ejecución de páginas web, servlets y algunos componentes EJB para aplicaciones Java EE. Los componentes web y su contenedor se ejecutan en el servidor web como Jetty, tomcat.