Java EE无需应用服务器

5
自从EJB 3以来,我们拥有了可嵌入的EJB容器,可以在没有应用服务器的情况下使用JPA实现,还有Weld用于上下文和依赖注入等。由于许多系统只有Tomcat可用,我想知道是否可以在没有应用服务器但有Servlet容器(如Tomcat)的情况下使用Java EE。
要设置一个Java环境,我需要做什么?你认为有哪些缺点?

是的,基于Servlet容器。我已经添加了这个。 - deamon
4个回答

5
请注意,Tomcat是一个应用程序服务器。 话说,在10月份,我们发布了添加了缺失的JavaEE部分的Tomcat,即Apache TomEE,然后使用来自Oracle的官方TCK获得了Java EE 6认证。
这个堆栈从以前被简单称为“OpenEJB / Tomcat”的东西发展而来,它是一个有用的堆栈,但名称不好:)通常由于“EJB”部分而被忽视,同时它也为Tomcat提供了事务、JMS、WebServices等功能。 新名称更好,现在像JBoss或GlassFish一样正式获得了认证。 我们对它的未来感到非常兴奋。

2
如果我理解正确,您想在Servlet容器中使用EJB3/JPA。
不仅有独立的JPA实现,还有可嵌入的EJB3容器,例如OpenEJB或Glassfish embeddable container。因此,您可以从Servlet容器启动这样的可嵌入式容器以使用EJB3。
(注意:我不知道所有事务的细节。在完整的应用程序服务器中,您拥有JTA和分布式事务管理器。在诸如Tomcat之类的Servlet容器中没有这样的功能。JPA使用JTA和纯JDBC,但是我不确定没有JTA的可嵌入式容器如何工作。尽管如此,我认为这也可以正常工作,因为这种可嵌入式容器也用于单元测试,在那里我猜测没有JTA分布式事务管理器。)
另一种方法是使用Spring。Spring和EJB3确实变得非常相似。您可以在Servlet容器中启动Spring DI容器,并从EJB3(声明式事务等)中获得更多或更少的便利设施。请参阅此帖子Spring vs. EJB3
所有这些技术都变得非常模块化,特别是使用Java EE配置文件。您可以独立地使用Sevlets、EJB3、JMS、JPA,甚至JTA。您还可以创建一个环境,在其中可以选择您想要的技术,无论是使用Spring还是Java EE。问题是什么时候停止使用这种方法,而是使用具有所有可用且易于管理的应用程序服务器。我认为Servlet / EJB3 / JPA是极限,如果需要更多,请使用应用程序服务器。

1
通常情况下,您需要一种容器,即使该容器不提供Java EE相关的服务。毕竟,您需要一个长期运行的JVM进程来托管您正在执行的代码。Tomcat和Jetty可以很好地完成这项工作,并且除了基本的servlet服务外,还提供了一些有用的额外功能,例如连接池。

-1
我(来自Atomikos的Guy Pardon)多年前介绍了不需要应用服务器的J2EE,发表了这篇开创性的文章:http://www.onjava.com/pub/a/onjava/2006/02/08/j2ee-without-application-server.html - 当时重点是JMS和JDBC。
一般来说,由于Spring和Hibernate的帮助,设置很容易。实际上,在做完一个Java EE项目并面对与应用服务器和EJB相关的XML地狱后,我受到启发开始做这个。没有应用服务器,事情突然变得更简单、更可测试。
如果您需要Tomcat安装,则配置可能会有些麻烦,但最近Atomikos已经作为其商业产品的一部分推出了开箱即用的Tomcat集成http://www.atomikos.com
希望对您有所帮助。

1
“在做完一个Java EE项目并面对与应用服务器和EJB相关的XML地狱后,我受到了启发。” -> 这不再是真实情况。可以说J2EE已经被“弃用”,而这个问题提到的是Java EE。自从Java EE 5以来,几乎没有配置要求。现在我们有Java EE 6和Java EE 7,在大多数情况下都不需要配置。测试也变得简单易行。请查看http://arquillian.org/。 - zmirc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接