### EJB3.1技术培训知识点详述 #### 一、EJB3.1概述 **EJB(Enterprise JavaBeans)3.1** 是Java EE平台中的一个重要组成部分,主要用于构建可伸缩、健壮的企业级应用程序。EJB3.1在前代版本的基础上做了大量的改进和增强,使得开发者能够更加高效地进行企业级应用的开发。 - **Session Bean开发**: - **会话Bean (Session Bean)**:是EJB的核心之一,主要负责与客户端交互以及执行业务逻辑。它可以分为**无状态会话Bean**和**有状态会话Bean**。 - **无状态会话Bean (Stateless Session Bean)**:这种类型的Bean不保留任何客户特定的状态信息,因此它可以在多个客户端之间共享,从而提高性能。 - **有状态会话Bean (Stateful Session Bean)**:与无状态会话Bean相反,有状态会话Bean会为每个客户端维护一个实例,并且保留客户特定的状态信息。 - **Singleton Session Bean**:这是一种新的会话Bean类型,其特点是单例模式。Singleton Session Bean在整个应用生命周期中只有一个实例,通常用于实现跨应用程序的数据共享等功能。 - **Session Bean生命周期事件**: - **创建**:当客户端第一次请求某个会话Bean时,容器创建一个新的Bean实例。 - **销毁**:对于有状态会话Bean,在客户端断开连接或显式销毁Bean时;对于无状态会话Bean,则是在容器决定回收资源时。 - **激活与钝化**:对于有状态会话Bean,当容器需要释放内存时,会将Bean钝化(即序列化到磁盘),并在需要时重新激活。 - **Session Bean调用方式**: - **本地调用**:在同一应用服务器内部调用,使用Local接口,性能较高。 - **远程调用**:跨越不同的应用服务器,使用Remote接口,需要考虑网络延迟等问题。 #### 二、Session Bean开发 - **开发无状态会话Bean**: - 当开发一个只有Local接口的无状态会话Bean时,需要使用`@Local`注解声明接口是本地接口。 - 当开发一个只有Remote接口的无状态会话Bean时,需要使用`@Remote`注解声明接口是远程接口。 - 如果既不使用`@Local`也不使用`@Remote`注解,容器会默认将接口视为Local接口。 - 示例代码: ```java @Local public interface AnnotatedEJBLocal { String getName(); void setName(String name); } @Remote public interface AnnotatedEJBRemote { String getName(); void setName(String name); } @Stateless public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote { private String name = "foo"; // 实现方法... } ``` - **开发有状态会话Bean**: - 类似于无状态会话Bean,但是需要使用`@Stateful`注解。 - 示例代码: ```java @Stateful public class AnnotatedEJB implements AnnotatedEJBLocal, AnnotatedEJBRemote { private String name = "foo"; // 实现方法... } ``` - **开发Singleton Session Bean**: - 使用`@Singleton`注解来标记Singleton Session Bean。 - 示例代码: ```java @Singleton public class SingletonEJB implements SingletonEJBLocal { private String name = "foo"; // 实现方法... } ``` #### 三、Session Bean生命周期事件 - **创建**:当客户端首次请求会话Bean时,容器会创建一个新的Bean实例。 - **销毁**:对于有状态会话Bean,在客户端断开连接或显式销毁Bean时;对于无状态会话Bean,则是在容器决定回收资源时。 - **激活与钝化**:对于有状态会话Bean,当容器需要释放内存时,会将Bean钝化(即序列化到磁盘),并在需要时重新激活。 #### 四、Session Bean调用方式 - **本地调用**:在同一应用服务器内部调用,使用Local接口,性能较高。 - **远程调用**:跨越不同的应用服务器,使用Remote接口,需要考虑网络延迟等问题。 #### 五、扩展知识点 - **Time-Service【调度服务】**:EJB3.1引入了定时服务,允许开发者在EJB容器中安排定时任务。 - **嵌入式EJB容器**:某些场景下可能需要在非Java EE环境中运行EJB,此时可以使用嵌入式EJB容器。 - **实体Bean (Entity Bean)**:尽管在EJB3.1中不再推荐使用,但在早期版本中,实体Bean用于表示持久化的对象,类似于现在的JPA实体。 - **消息驱动Bean (Message-Driven Bean)**:用于处理来自消息中间件的消息,支持异步消息处理。 以上内容详细介绍了EJB3.1中Session Bean的相关知识点,包括不同类型的会话Bean、它们的开发方式、生命周期管理以及调用机制等方面。希望这些信息能帮助开发者更好地理解和掌握EJB3.1技术。
- tongxil2015-04-25蛮有用的,谢谢
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助