ejb-3.0 - 嵌入式 EJB 容器与实际服务器容器有什么区别

标签 ejb-3.0 ejb-3.1 openejb

嵌入式 EJB 容器与生产中使用的实际服务器容器之间的明显区别是什么。

我可以找到 2 个场景。

  1. 例如。 glassfish-embedded-static-shell.jar - 没有任何实现,依赖于本地安装的 glassfish 服务器。
  2. 与 OpenEJB 类似 - 只需将 jar 添加到类路径中,无需安装。

AFAIK,两者都称为嵌入式容器。那么,它的真正含义是什么?

此外,嵌入式容器是否具有 EJB 规范支持的所有功能?

最佳答案

服务器 EJB 容器作为应用程序服务器应用程序的一部分启动,通常与应用程序服务器中包含的其他服务和技术进行更深入的集成。当您获得控制权时(例如,因为您的类有一个 main 方法,并且您希望拥有 EJB),您的应用程序将启动可嵌入的 EJB 容器。因此,可嵌入的 EJB 容器方便进行单元测试。

可嵌入的 EJB 容器可以但不要求具有 EJB 规范支持的所有功能。 EJB 3.1 规范的表 27(第 21.1 节)列出了可嵌入 EJB 容器所需的功能。特别是,嵌入式 EJB 容器不需要支持:

  • 远程 EJB(作为客户端或服务器)。
  • 网络服务
  • 计时器
  • MDB 和实体 Bean

关于ejb-3.0 - 嵌入式 EJB 容器与实际服务器容器有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655337/

相关文章:

java - 我应该为我的业务层使用 EJB3 还是 Spring?

java - TomEE 中使用 EJB 3.1 的推土机

jakarta-ee - @Ejb 依赖注入(inject)上的 NullPointerException

java - DDL 生成和常规 persistence.xml 设置 (OpenJPA)

java - openejb 容器和 hibernate 的集成测试失败

使用 EclipseLink 的远程客户端的 JPA 延迟加载策略

java - 网络逻辑 appc : include generic arguments in the ejb client jar

ejb-3.0 - 如何访问EJB3中实体类内部的EntityManager

java - 使用 context.lookup 加载远程接口(interface)时出现问题

java - 无状态 session Bean 与无状态单例