guokehua(@yahoo.com.cn oy Java! 1010 31SessionEJB(2) 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 31SessionEJB SessionEJB(2)
guokehua(@yahoo.com.cn oy: Java Bean和EJB Java bean是一个符合某种规范的Java类文件 > Enterprise Java Bean并不是一个单独的文件其组成包括 类文件:实现基本方法的类,封装了需要实现的商务逻辑/数据逻 1010 辑或消息处理逻辑,要与一些严格定义的接口保持一致 接口文件:接口作为EJB组件模型的一部分要求类文件必须提供 实现的方法 描述文件:作为部署描述文件 一些资源文件 Javabean只能作为一个类被调用(只有调用的时候才运 行 (JavaBean是一个进程内组件) >BB可以作为一个服务被调用(可以单独运行)(EJB是一个进 程级组件) 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Java Bean Java Bean和EJB ¾ Java Bean是一个符合某种规范的Java类文件 ¾ Enterprise Java Bean并不是一个单独的文件,其组成包括: ¾ 类文件:实现基本方法的类,封装了需要实现的商务逻辑/数据逻 辑或消息处理逻辑,要与一些严格定义的接口保持一致 ¾ 接口文件:接口作为EJB组件模型的一部分,要求类文件必须提供 实现的方法 ¾ 描述文件:作为部署描述文件 ¾ 一些资源文件 ¾ JavaBean只能作为一个类被调用(只有调用的时候才运 行)(JavaBean是一个进程内组件) ¾ EJB可以作为一个服务被调用(可以单独运行) (EJB是一个进 程级组件)
guokehua(@yahoo.com.cn 了y何时使用会话Bean 使用会话bean对针对于某一客户的处理 或控制对象建模 「·对工作流、任务和管理活动等建模(如订 房、购物车等) ·协调多个实体bean,控制实体bean之间 打的 交互 ·将业务应用逻辑从客户端转移到服务器端 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 何时使用会话Bean • 使用会话bean 对针对于某一客户的处理 或控制对象建模 • 对工作流、任务和管理活动等建模(如订 房、购物车等) • 协调多个实体bean,控制实体bean之间的 交互 • 将业务应用逻辑从客户端转移到服务器端
guokenua(@yahoo.com.cn oy yava stateless Session Bean的生命周期 Does not Exist 根据具体情况决 定是否需要删除 1010 Bean实例 1. setsession Context 2. ejbCreate eib Remove 根据具体情况决 定是否需要创建 Ready 新的Bean实例 客户端 调用商 业方法 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 stateless stateless SessionBean SessionBean的生命周期 根据具体情况决 定是否需要创建 新的Bean实例 根据具体情况决 定是否需要删除 Bean实例 客户端 调用商 业方法
guokehua(@yahoo.com.cn oy Java! stateless session bean生命周期 首先,应用服务器初始化Bean实例并放入Bean池,Bean池 的大小可以事先设定初始化Bean实例的时间由容器自己 决定 0>容器初始化Beam实例时首先调用Beam的构造函数 Class. newInstanceO,然后调用 setSession Context()把一个 Context对象和Bean相关联 >Home对象的 create方法创建的是EB对象,是Bean实例的 代理,而不是Bean实例,多个EJB对象可能只对应一个Bean 实例 >对于无状态 Session bean,调用 ejbCreateO方法创建EJB对 象时不带参数 客户端调用的 Removed方法只是删除了BJB对象,而Bean 的实例删除完全取决于EB容器 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 stateless stateless SessionBean SessionBean生命周期 ¾ 首先,应用服务器初始化Bean实例并放入Bean池,Bean池 的大小可以事先设定,初始化Bean实例的时间由容器自己 决定 ¾ 容器初始化Bean实例时,首先调用Bean的构造函数 Class.newInstance(),然后调用setSessionContext()把一个 Context对象和Bean相关联 ¾ Home对象的create()方法创建的是EJB对象,是Bean实例的 代理,而不是Bean实例,多个EJB对象可能只对应一个Bean 实例 ¾ 对于无状态Session Bean,调用ejbCreate()方法创建EJB对 象时不带参数 ¾ 客户端调用的Remove()方法只是删除了EJB对象,而Bean 的实例删除完全取决于EJB容器
guokehua(@yahoo.com.cn y儿个小间题 ·生命周期问题,何时生成对象? .实例个数间题 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 几个小问题 • 生命周期问题,何时生成对象? • 实例个数问题
guokehua(@yahoo.com.cn Pa两种类型的会话bean 无状态( Stateless)bean 表达一个无状态的服务(如mai 1010 不存储用户相关信息,进行对请求的响 应 暂态的 可用来构造响应频繁而简单的访问的 bean池 有状态( Stateful)bean 维护客户状态 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 两种类型的会话 两种类型的会话bean • 无状态(Stateless)bean – 表达一个无状态的服务(如mail) – 不存储用户相关信息,进行对请求的响 应 – 暂态的 – 可用来构造响应频繁而简单的访问的 bean池 • 有状态(Stateful)bean – 维护客户状态
guokehua(@yahoo.com.cn oy Java! 函数剖析 函数 来源 作用 调用后状态 构造函数(由接口的B ean 初始化调用 101010create 函数激发) setSession Context 叫 setSession Context(Ses session Bea见下页调用 ejbcreate sionContext ctx) n接口 jb Create J2EE规范见下页进入准备状态 各个商业方法 自编 商业逻辑准备状态 ejbPassivate session bea见下页钝化状态 n接口 ejbActivate(业方法 session Bea见下页准备状态 0激发 n接口 ejbremove(接口 session bea见下页不存在 Remove函数激发)n接口 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 函数剖析 函数 来源 作用 调用后状态 构造函数(由接口的 create函数激发) Bean 初始化 调用 setSessionContext setSessionContext(Ses sionContext ctx) sessionBea n接口 见下页 调用ejbCreate ejbPassivate sessionBea n接口 见下页 钝化状态 ejbCreate J2EE规范 见下页 进入准备状态 各个商业方法 自编 商业逻辑 准备状态 ejbActivate(商业方法 激发) sessionBea n接口 见下页 准备状态 ejbRemove(接口 Remove函数激发) sessionBea n接口 见下页 不存在
guokenua(@yahoo.com.cn oy Java! 剖析有状态会话Bean 有状态会话bean可能出现的几种状态 消亡状态:不占任何资源 1010 准备状态:可以被客户调用 钝化状态:放在缓存里面,腾出内存 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 剖析有状态会话Bean • 有状态会话bean可能出现的几种状态 • 消亡状态:不占任何资源 • 准备状态:可以被客户调用 • 钝化状态:放在缓存里面,腾出内存
guokehua(@yahoo.com.cn oy ava! stateful SessionBean的生命周期 Does not Exist 客户端超过时间限制 当容器中的Bean实例个数超 1目 过限制时容器要钝化某些 Bean实例,并把与该Bean实例 1. create 2. setsession Context 1. remove 相关的客户端信息保存起来 3. ejb Create 2. ejbRemove e]pAssivate Ready Passive Activate 客户端调用 商业方法 在先前的客户端再次调用时 必须先把已经钝化的信息再 读入到Bean实例中 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 stateful SessionBean stateful SessionBean的生命周期 客户端超过时间限制 当容器中的Bean实例个数超 过限制时,容器要钝化某些 Bean实例,并把与该Bean实例 相关的客户端信息保存起来 在先前的客户端再次调用时, 必须先把已经钝化的信息再 读入到Bean实例中 客户端调用 商业方法