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.
¿Pero con un contenedor Web? –
Sí, basado en un contenedor Servlet. He agregado esto – deamon
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) –