50 个最热门的 EJB 面试问题及答案 (2025)
以下是 EJB 面试问题和答案,可帮助新手和经验丰富的开发人员候选人获得理想的工作。
1.什么是EJB?
管理用于约束企业应用程序的架构并进行管理的服务器端组件称为企业 JavaBeans (EJB)。
2.EJB 是什么时候开发的?
EJB 由 IBM 于 1997 年开发。
3.谁接管了EJB?
EJB 于 1999 年被 Sun Microsystems 接管。
4. 列出企业 Bean 类型?
它们分别是:
- 会话 Bean: 扩展为“Stateful”、“Stateless”和“Singleton”,使用远程或本地接口来访问 EJB 文件。
- 消息驱动 Bean (MDB): 支持通过消息传递范式进行异步执行。
5.什么是实体 Bean?
实体 Bean 出现在 EJB 的早期版本中,由分布式对象中的持久数据组成。
6. 列出声明式交易类型?
它们分别是:
- 强制的:
- 所需
- 需要新的
- SUPPORTS
- 不支持
- 决不
7. EJB 有哪些版本?
- EJB 3.1
- EJB 3.2
- EJB 3.2 最终版本(2013-05-28)
- EJB 3.1 最终版本(2009-12-10)
- EJB 3.0 最终版本(2006-05-11)
- EJB 2.1,最终版本(2003-11-24)
- EJB 2.0 最终版本(2001-08-22)
- EJB 1.1 最终版本(1999-12-17)
- EJB 1.0(1998-03-24)
8.什么是J2EE?
一组同步规范和程序,用于实现有关部署、开发和监督多层以服务器为中心的应用程序的解决方案,称为 J2EE.
9. 列出 EJB 2.1 中的变化?
所做的更改如下:
- 消息驱动 Bean (MDB):除了 JMS 之外,还接受来自其他来源的消息。
- EJB 查询语言:添加了新功能。
- 支持 Web 服务。
- EJB 计时器服务:基于事件在特定时间调用 EJB 的机制。
- XML 架构
- 消息目的地
10. 列出集装箱的内容。• 集装箱内含有什么?
- 安全支持:用于配置部署描述符(DD)
- 持久性支持:用于事务中的持久性。
- 事务管理支持:用于配置部署描述符(DD)
- Session的管理:Developer中使用了ejbStore()、ejbLoad()等回调方法。
- 生命周期管理:自动化
11. 区分‘状态会话’和‘实体 Bean’?
虽然两者都经历了激活和钝化;EB 有 ejbStore() 回调来通过钝化保存状态,有 ejbLoad() 回调来通过激活加载状态。但是对于 SS,这不需要,因为 SSB 字段是由容器通过对象序列化的。
12. 有状态 Bean 和无状态 Bean 哪个更有益?
如果需要对话状态,则优先考虑有状态模式,而对于单个业务流程,优先考虑无状态范式。
13. CMP 和 BMP 哪个更有益?
当涉及“一对一”映射,且数据持久存储在区域数据库中时,CMP 是首选。但是,当不存在“一对一”映射且数据从具有复杂查询的众多表中检索时,将使用 Bean 管理持久性。
14. 状态会话如何通过事务更新保持一致性?
每次承诺交易时,都会通过更新其字段来维护数据的一致性。
15. 定义会话 Bean 时 ejbCreate() 方法是必需的吗?
EjbCreate() 是 Bean 生命周期的一部分,因此,ejbCreate() 方法不是必须存在的,并且编译器不会返回任何错误。
16. 定义上下文?
这是一种通过提供类似 javax.naming.Context 的接口将名称绑定到特定对象的方法。
17. 定义初始背景?
上下文接口中可用方法的实现,例如名为 javax.meaning.InitialContext 的上下文。
18.定义SessionContext?
EJBContext 对象,SessionContext 用于访问信息和容器服务。
19.remove()可以是无状态会话 bean 吗?
是的,remove()可以是无状态会话 bean,因为在方法执行之前其生命期保持不变。
20. 无状态 bean 维护状态吗?
无状态 Bean 通过客户端调用的方法不包含任何客户端特定的状态。
21. EJB 可以处理多个事务吗?
通过启用多个实体 Bean 来处理每个数据库和一个会话 Bean 来保留与实体 Bean 的事务,可以使 EJB 处理多个事务。
22. 列出会话 Bean 的 CallBack 方法?
public interface javax.ejb.SessionBean extends javax.ejb.EnterpriseBean { Public abstract void ejbCreate(); public abstract void ejbRemove(); Public abstract void ejbActivate (); public abstract void setSessionContext(SessionContext ctx); public abstract void ejbPassivate(); }
23. 列出实体 Bean 的 CallBack 方法。
public interface javax.ejb.EntityBean extends javax.ejb.EnterpriseBean { public abstract void ejbRemove(); public abstract void ejbActivate(); public abstract void ejbStore(); public abstract void ejbPassivate(); public abstract void setEntityContext(EntityContext ctx); public abstract void unsetEntityContext(); public abstract void ejbLoad(); }
24. 如何在 EJB 中调用另一个 EJB?
可以通过使用 JNDI 在另一个 EJB 中调用一个 EJB,JNDI 可用于定位主接口并获取实例。
25.区分对话式和非对话式交互?
客户端和 Bean 之间的交互称为对话式交互,而不与客户端进行多方法对话的交互称为非对话式交互。
26.定义ejb Create()和EjbPostCreate()?
当在持久性存储中写入bean状态之前调用该方法时,它是ejbCreate()。
当持久性存储写入bean状态之后调用的方法就是ejbPostCreate()。
27.定义 EAR、WAR 和 JAR?
JAR 文件包含所有 EJB 类。
WAR 文件包含所有 servlet、Web 组件页面、gif、 HTML、bean、applet、类和类。
EAR 文件包含 JAR 和 WAR 文件。
28. 区分幻影与不可重复?
当插入之前不存在的数据时,它将被读取为幻影,而当改变已经存在的数据时,就会发生不可重复的情况。
29.定义ACID属性?
ACID 是原子性、一致性、隔离性和持久性。
- 原子性:捆绑在一起并投射到单个作业单元的操作。
- 一致性(Consistency):保证事务发生之后,具有一致性。
- 隔离:帮助保护对其他同时进行的未完成交易结果的查看。
- 耐用性:通过保留过渡日志来确保耐用性,通过再次应用所涉及的步骤可以重新创建永久数据。
30.“热部署”是什么意思?
当服务器在EJB中运行时,Web逻辑中的重新部署,部署和取消部署的行为称为热部署。
31. 如何配置会话 Bean 以进行 Bean 管理的事务?
可以通过在部署部门或 XML 文件中设置 transaction-attribute 来完成。
32. 列举 J2EE 所采用的技术。
J2EE 所采用的技术包括:
- 企业 JavaBeans™ (EJBs™)
- Java服务器页面(JSPsTM)
- Java Servlet
- Java 命名和目录接口 (JNDITM)
- Java 事务 API (日本旅游协会)
- 科巴
- JDBCTM 数据访问 API。
33. 什么是 Enterprise JavaBeans(EJB)容器?
企业 JavaBeans 容器有助于管理 J2EE 企业 Bean 应用程序的实现。
34. 内存复制是什么意思?
当具有单个物理 m/c 的内存的内容在该集群中的所有 m/c 中模拟时,该过程称为内存复制。
35. 定义涟漪效应?
在运行时,当服务器组的各种属性所做的更改传播到每个相关的克隆时,此过程称为涟漪效应。
36. 定义克隆?
服务器组副本被定义为克隆。但与服务器组不同,克隆是通过节点链接的。
37.bean 管理事务是什么意思?
如果开发人员不需要容器来管理事务,则可以实现每个数据库操作来编写合适的 数据库连接 码。
38. 区分 EJB 中的“查找方法”和“选择方法”?
持久字段由相关实体 bean 的 select 方法返回。远程或本地接口由 finder 方法返回。
39. 抽象模式是什么意思?
实体 bean 部署描述符中定义 bean 持久字段及其之间存在的关系的元素称为抽象模式。它特定于每个管理容器持久性的实体 bean。
40. 可重入是什么意思? 可以将会话 bean 指定为可重入吗? 可以将实体 bean 指定为可重入吗?
如果实体 bean 被定义为可重入的,则多个客户端可以与实体 bean 关联并在实体 bean 内部同时执行方法。同步由容器负责。当实体 bean 被定义为不可重入且多个客户端同时连接到它以执行方法时,会抛出异常。
41. 什么是EJB架构?
涉及面向事务的分布式企业应用程序的非可视组件称为企业 bean。它们通常部署在 EJB 容器中并在 EJB 服务器上运行。
这三种企业 Bean 类型为:
- 会话 Bean:这些企业 Bean 是非持久性的,可以是无状态的,也可以是有状态的。如果需要对话状态,则首选有状态模式,而对于单个业务流程,则首选无状态模式。
- 实体 Bean:实体 Bean 是早期版本的 EJB 中引入的,由分布式对象中的持久数据组成。它们能够保存在不同的持久数据存储中。
- 消息驱动 Bean:支持通过消息传递范式进行异步执行。遵循接收和处理数据的过程。它们仅通过消息进行访问,并且不维护对话状态。
42. 从 EJB 2.0 到 1.1 写出基于 CMP 实体的类的基本要求?
CMP 的基本要求是一个抽象类,容器可以扩展该抽象类并获取管理关系所需的方法。
43. 如何从 Active Server Pages 访问 Enterprise JavaBeans?
可以通过以下方式从 Active Server Pages 访问 Enterprise JavaBeans:
- “Java 2 平台”
- 企业版客户端访问服务 (J2EETM CAS) COM Bridge 1.0 目前已从 Sun Microsystems 下载。
44. 有静态初始化块 法律 在 EJB 中?
从技术上讲这是合法的,但是在实例化类时,在最终执行任何方法或构造函数之前,已经使用了静态初始化块来执行代码片段。
45. EJB 2.0 规范有哪些变化?
EJB 2.0 规范中的更改包括:
- JMS 与 EJB 集成。
- 消息驱动 Bean。
- 实施额外的业务方法。
46. EJBDoclet 是什么意思?
JavaDoc doclet 是一个开放源代码的 doclet,它从嵌入在 EJB 源文件中的自定义 JavaDoc 的注释标签生成与 EJB 相关的好东西。
47. EJB QL 是什么意思?
一种查询语言,它提供通过由企业 bean 和对象组成的网络进行导航的功能,这些对象相互依赖,并由容器管理持久性的方法定义。EJB 2.0 是引入 EJB QL 的平台。它定义了用于实体 bean 的查找器方法,实体 bean 具有容器管理持久性,并且具有跨持久性管理器和容器的可移植性。它对两种查找器方法很有用:Finder 方法,具有 Home 接口并返回实体对象。选择方法,这些方法对客户端不公开,但 Bean 提供程序会使用它们。
48. EJB 调用是如何发生的?
通过 JNDI 从命名服务检索 Home 对象引用。Home 对象引用返回给客户端。步骤如下:
- 通过 Home Object 接口创建一个新的 EJB 对象。
- 从 Ejb 对象创建一个 EJB 对象。
- 向客户端返回一个 EJB 对象引用。
- 使用 EJB 对象引用调用业务方法。
- 将请求委托给Bean(企业Bean)。
49. 在 CMP 中可以映射多个表吗?
不可以,单个 CMP 中不能映射多个表。
50. 实体 Bean 是否允许创建 () 方法?
是的,在没有使用 Java 应用程序插入数据的情况下是允许的。
这些面试问题也会对你的口试有帮助