由于EJB 3我们有可嵌入的EJB容器,因此可以在没有应用程序服务器的情况下使用JPA实现,有上下文和依赖项注入的Weld等。因为在许多系统上只有Tomcat可用,我想知道,如果Java EE可以在没有应用程序服务器的情况下使用,而是使用像Tomcat这样的Servlet容器。
设置Java环境需要做什么?你看到了什么缺点?
答案 0 :(得分:5)
请注意,Tomcat是一个Application Server。也就是说,在10月份,我们发布了Apache TomEE,这是添加了缺少的JavaEE部分的Tomcat,然后使用Oracle的官方TCK认证了Java EE 6。
堆栈是从以前简单称为" OpenEJB / Tomcat"发展而来的,这是一个名字不好的有用堆栈:)由于" EJB"而被忽略了同时,它还向Tomcat提供了Transactions,JMS,WebServices等。新名称要好得多,现在它正式认证,如JBoss或GlassFish。我们对它的未来感到非常兴奋。
答案 1 :(得分:2)
如果我理解得很好,你想在servlet容器中使用EJB3 / JPA。
不仅有JPA的独立实现,还有 embeddable EJB3容器,例如OpenEJB或Glassfish embeddable container。因此,没有什么可以阻止您从Servlet容器启动这样的可嵌入容器来使用EJB3。
(注意:我不知道有关事务的所有细节。在一个成熟的应用服务器中,你有JTA和分布式事务管理器。你没有在像Tomcat这样的Servlet容器中拥有它。与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是限制,如果需要更多应用程序。服务器
答案 2 :(得分:1)
您通常需要某种类型的容器,即使该容器不提供与Java EE相关的服务也是如此。毕竟,您需要一个长期存在的JVM进程来托管您正在执行的代码。 Tomcat和Jetty可以很好地完成这项工作,除了基本的servlet服务之外,还提供了一些与连接池相关的有用附加功能。
答案 3 :(得分:-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项目并遇到与app服务器和EJB相关的XML地狱后,我受到启发。没有应用服务器,事情突然变得更加简单和可测试。
如果您需要Tomcat安装,那么配置可能会有点麻烦,但最近Atomikos已在http://www.atomikos.com引入了开箱即用的Tomcat集成作为其商业产品的一部分。
HTH