5

从 EJB 3 开始,我们有了可嵌入的 EJB 容器,JPA 实现可以在没有应用服务器的情况下使用,还有 Weld 用于上下文和依赖注入等等。由于在许多系统上只有 Tomcat 可用,我想知道是否可以在没有应用程序服务器的情况下使用 Java EE,但可以使用像 Tomcat 这样的 Servlet 容器。

我需要做什么来设置 Java 环境?你看到什么缺点?

4

4 回答 4

5

请注意,Tomcat 是一个应用程序服务器。也就是说,在 10 月,我们发布了Apache TomEE,它是 Tomcat,添加了缺少的 JavaEE 部分,然后使用 Oracle 的官方 TCK 认证了 Java EE 6。

该堆栈是从过去简单地称为“OpenEJB/Tomcat”的堆栈演变而来的,这是一个有用的堆栈但名字却很糟糕:) 由于“EJB”部分而经常被忽视,同时它还向 Tomcat 提供了 Transactions、JMS、WebServices 等. 新名称要好得多,现在它像 JBoss 或 GlassFish 一样获得了官方认证。我们对它的未来感到非常兴奋。

于 2012-01-31T23:48:07.393 回答
2

如果我理解得很好,您想在 servlet 容器中使用 EJB3/JPA。

不仅有 JPA 的独立实现,还有可嵌入的EJB3 容器,例如OpenEJB或 Glassfish可嵌入容器。因此,没有什么能阻止您从 Servlet 容器启动这样的可嵌入容器以使用 EJB3。

(注意:我不知道有关事务的所有细节。在成熟的应用程序服务器中,您有 JTA 和分布式事务管理器。在 Tomcat 等 Servlet 容器中没有。JPA 与 JTA 一起使用和普通的 JDBC,但我不知道没有 JTA 的可嵌入容器是如何工作的。不过,我想这会起作用,因为这样的可嵌入容器也用于单元测试,我猜没有 JTA 分布式事务管理器。)

另一种方法是使用 Spring。Spring 和 EJB3 确实变得非常相似。您可以在 Servlet 容器中启动 Spring DI 容器,并或多或少地从与 EJB3 相同的功能(声明性事务等)中受益。请参阅这篇关于Spring 与 EJB3 的文章。

所有这些技术都变得非常模块化,尤其是在 Java EE 配置文件中。您可以以某种方式相互独立地使用 Sevlets、EJB3、JMS、JPA 甚至 JTA。您还可以使用 Spring 或 Java EE 创建一个环境,在其中挑选您想要的环境。问题是它什么时候才有意义,而是使用应用程序。服务器,一切可用且易于管理。我认为 Servlet/EJB3/JPA 是限制,如果需要更多的应用程序。服务器。

于 2010-03-26T12:28:58.040 回答
1

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

于 2010-03-25T15:38:31.493 回答
-1

没有应用服务器的 J2EE 是几年前由我(Guy Pardon,来自 Atomikos)介绍的,这篇开创性的文章: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 在http://www.atomikos.com上推出了开箱即用的 Tomcat 集成作为其商业产品的一部分。

高温高压

于 2014-09-04T15:01:37.923 回答