2010-03-25 9 views
5

Desde EJB 3 tenemos contenedores embebibles EJB, las implementaciones JPA se pueden utilizar sin un servidor de aplicaciones, hay soldadura para contextos e inyección de dependencia, etc. Como en muchos sistemas solo está disponible Tomcat, me pregunto si Java EE podría usarse sin un servidor de aplicaciones pero con un contenedor Servlet como Tomcat.Java EE sin servidor de aplicaciones

¿Qué tendría que hacer para configurar un entorno Java? ¿Qué inconvenientes ves?

+0

¿Pero con un contenedor Web? –

+0

Sí, basado en un contenedor Servlet. He agregado esto – deamon

+0

Vea también esta pregunta, [Además de EAR y EJB, ¿qué obtengo de un servidor de aplicaciones Java EE que no obtengo en un contenedor de servlets como Tomcat?] (Http://stackoverflow.com/a/9199893/190816) –

Respuesta

1

Generalmente necesitará algún tipo de contenedor, incluso si ese contenedor no proporciona servicios relacionados con Java EE. Después de todo, necesitas un proceso de JVM de larga duración para alojar el código que estás ejecutando. Tomcat y Jetty harán el trabajo bien, y además de los servicios servlet básicos, brindan algunos extras útiles que serán relevantes, como la agrupación de conexiones.

2

Si lo entiendo bien, quiere usar EJB3/JPA dentro de un contenedor de servlets.

, no solamente hay independientes implementaciones de JPA, sino también integrable contenedor EJB3, como OpenEJB o Glassfish embeddable container. Por lo tanto, nada le impide iniciar dicho contenedor incrustable desde el contenedor Servlet para usar EJB3.

(Nota: no conozco todos los detalles sobre las transacciones. En un servidor de aplicaciones completo, tiene JTA y un administrador de transacciones distribuidas. No lo tiene en un contenedor Servlet como Tomcat. JPA funciona con JTA y JDBC simple, pero no sé exactamente cómo funciona un contenedor embebible sin JTA. Aun así, supongo que eso funcionaría dado que esos contenedores incrustables también están destinados a pruebas unitarias donde supongo que no hay JTA distribuido gerente de transacciones)

Otro enfoque sería utilizar Spring. Spring y EJB3 se han vuelto muy similares. Puede iniciar el contenedor de Spring DI dentro del contenedor Servlet y beneficiarse más o menos de las mismas instalaciones que EJB3 (transacciones declarativas, etc.). Ver esta publicación sobre Spring vs. EJB3.

Todas estas tecnologías se han vuelto bastante modulares, especialmente con los perfiles de Java EE. Puede usar Sevlets, EJB3, JMS, JPA, incluso JTA de alguna manera independientemente el uno del otro. También puede crear un entorno donde elija los que desee, ya sea con Spring o con Java EE. La pregunta es cuándo deja de tener sentido y más bien usa una aplicación. servidor con todo disponible y fácilmente manejable. Creo que Servlet/EJB3/JPA es el límite, si se necesita más, vaya a una aplicación. servidor.

5

Tenga en cuenta que Tomcat es un servidor de aplicaciones. Dicho esto, en octubre lanzamos Apache TomEE que es Tomcat con las partes faltantes de JavaEE agregadas, luego certificamos Java EE 6 utilizando el TCK oficial de Oracle.

La pila evolucionó a partir de lo que solía llamarse simplemente "OpenEJB/Tomcat", que era una pila útil con un mal nombre :) Descuidada por la parte "EJB", mientras tanto también entregaba Transacciones, JMS, WebServices y más a Tomcat. El nuevo nombre es mucho mejor y ahora está certificado oficialmente como JBoss o GlassFish. Estamos muy entusiasmados con su futuro.

-1

J2EE sin servidor de aplicaciones fue introducido hace años por mí (Guy Pardon, de Atomikos), con este artículo seminal: http://www.onjava.com/pub/a/onjava/2006/02/08/j2ee-without-application-server.html - centrado en JMS y JDBC en ese momento.

En general, es fácil de configurar gracias a Spring e Hibernate. En realidad, me inspiré para hacer esto después de hacer un proyecto Java EE y enfrentarme al infierno XML asociado con los servidores de aplicaciones y los EJB.Sin servidor de aplicaciones, las cosas de repente se volvieron mucho más simples y más comprobables.

Si necesita una instalación de Tomcat, puede ser un poco más complicado de configurar, pero Atomikos introdujo la integración inmediata de Tomcat como parte de su oferta comercial en http://www.atomikos.com.

HTH

+1

"Me inspiré para hacer esto después de hacer un proyecto Java EE y enfrentarme al infierno XML asociado con los servidores de aplicaciones y los EJB" -> Eso ya no es cierto. J2EE está "en desuso" por así decirlo, y esta pregunta menciona Java EE, no J2EE. Desde Java EE 5, hay una configuración cercana a 0. Ahora tenemos Java EE 6 y Java EE 7, que requieren configuración 0 en la mayoría de los casos. Las pruebas también son posibles y fáciles. Eche un vistazo a http://arquillian.org/ – zmirc

Cuestiones relacionadas