Java私塾面试题:线程、JSP与EJB深度解析

需积分: 7 1 下载量 56 浏览量 更新于2024-09-27 收藏 158KB PDF 举报
"Java私塾面试题涉及到Java中的线程、JSP以及EJB相关知识,包括EJB规范中的禁止操作、远程接口和主页接口的作用、EJB实例的生命周期、EJB的激活机制以及EJB的类型等核心概念。" 在Java企业级应用开发中,EJB(Enterprise JavaBeans)是一个重要的组件模型,它定义了一套标准来简化分布式多层应用的开发。面试题中提到了EJB规范规定的一些禁止操作,这些操作主要是为了保证EJB的可移植性、安全性和稳定性: 1. **禁止操作线程和线程API**:EJB容器会自动管理线程,因此开发者不应直接使用线程API,如`notify`, `wait`等,以防止并发控制问题。 2. **禁止操作AWT/Swing**:EJB设计为服务器端组件,不支持用户界面操作,因此禁止使用图形用户界面相关的API。 3. **禁止实现服务器功能**:EJB不应包含服务器级别的功能,这些应由EJB容器提供。 4. **禁止对静态属性的存取**:静态属性可能导致共享状态,从而引发并发问题。 5. **禁止直接访问文件系统**:EJB应当通过JNDI或文件服务API来访问文件,以确保数据持久化的安全性。 6. **禁止加载本地库**:这可能导致依赖于特定服务器环境的问题。 7. **禁止使用`this`作为变量和返回值**:`this`可能暴露内部状态,破坏封装性。 8. **禁止循环调用**:循环调用可能导致无限递归,消耗大量资源。 接着,面试题提到了EJB的两个主要接口:Remote接口和Home接口。**Remote接口**定义了业务逻辑方法,客户端通过这个接口与EJB实例交互。**Home接口**则是客户端获取EJB实例的工厂,负责创建和移除EJB实例。 EJB实例的生命周期包括创建、设置上下文、创建EJBObject、业务方法调用和移除等阶段。对于无状态会话Bean和消息驱动Bean,它们通常由缓冲池管理,创建后的实例会被重用。而对于有状态会话Bean和实体Bean,它们可能存在缓存中,通过激活和去激活机制保持状态,并限制内存中的实例数量。 面试题还提到了EJB的激活机制,以有状态会话Bean为例,当客户端调用某个EJB实例时,如果对应的EJBObject找不到实例,则会从去激活的Bean存储中恢复该实例。这个过程通过ejbActive和ejbPassivate方法来标记状态的变迁。 最后,EJB主要有三种类型: - **会话Bean**:分为有状态(Stateful Session Bean)和无状态(Stateless Session Bean),前者跟踪用户的交互状态,后者不保存状态。 - **实体Bean**:负责持久化数据,分为Bean管理的持续性(BMP)和容器管理的持续性(CMP),前者由开发者管理数据库交互,后者由容器自动处理。 - **消息驱动的Bean**(MessageDriven Bean):用于处理消息队列中的消息,常用于异步处理。 了解这些核心概念对于理解和开发Java企业级应用至关重要,尤其是在面试场景下,能够体现开发者对企业级开发的理解深度。