Enterprise JavaBeans 概览
EJB 是构建健壮,可扩展并支持事务处理的分布式对象技术规范。本章主要讲述 EJB 的分类,EJB 服务器,Bean 的生命周期以及 Bean 有三个类: bean 类, home 接口和 remote 接口等。
本章讲述内容
- EJB 技术所解决的问题
- 一些术语
- 不同类型的 Bean
什么是 EJB?
- 一个技术规范:EJB 从技术上而言不是一种"产品"
- EJB 是一种标准描述了构建应用组件要解决的:
- 可扩展 (Scalable)
- 分布式 (Distributed)
- 事务处理 (Transactional)
- 数据存储 (Persistent)
- 安全性 (Secure)
Sun 对 EJB 的期望
- 提供一个标准的分布的、基于 OO 的组件架构
- 屏蔽复杂的系统级功能需求
- Write once, run anywhere
- 与非 Java 应用之间的互操作能力
- 兼容 CORBA 标准
什么是 Enterprise JavaBeans?
- 区别于 JavaBean
- 分布式对象系统的组件架构
- 构建可扩展、可延伸系统的框架
为什么选择 EJB?
- EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现而不是底层的实现机制(类似于 4GL 语言设计的目标)
- 支持事务处理
- 多个业务操作同时成功,或全部失败
- 可以通过在代码外的描述来定义事务处理级别
- 可扩展性
- EJB 可以根据您应用的增长而扩展
- EJB 服务器往往还提供了负载均衡和
- 安全性:由 EJB 服务器提供资源的访问权限控制
EJB 架构
- 为了满足架构的目标,规范中描述了
- 服务器 (Server)
- 容器 (Container)
- 类 (Class) 和实例 (Instance)
- Home 和 Remote 接口
- 客户端 (Client)
简化的编程模型
- 关注于业务逻辑实现:EJB 负责生命周期 (lifecycle), 数据存储 (persistence), 事务处理语义 (transactional semantic), 安全(security), ...
- 通用的编程模型:各种服务的高层 API
- Java 是其编程语言
EJB 特点
- 由一个 EJB 容器在运行时创建和管理 EJB
- 在部署 EJB 时定制其运行方式
- 由 EJB 容器和服务器来协调客户端的访问
- 可以部署到任何兼容的 EJB 容器中
- 客户端对 EJB 的视图是由 Bean 开发人员决定的
EJB 服务器
- 管理 EJB 容器 (它管理 Bean)
- 提供对操作系统服务的存取
- 提供 Java 相关的服务,尤其是
- 通过 JNDI 访问命名空间
- 基于 OTS 的事务处理服务
| |
EJB 容器
- 管理 Bean 生命周期:将 EJB 服务器提供的服务传递给 Bean
- 生成代码来实现对 Bean 的存取访问
- 强制事务处理的限制
- 创建、初始化和回收 Bean
- 管理持久数据的存储
- 对客户端而言 EJB 容器是透明的
在一个 EJB 服务器中的容器
- 目前容器通常是由 EJB 服务器本身提供的
- 在 EJB 1.0 或 1.1 规范中没有定义容器-到-服务器的接口
- 各厂商可以根据他们的见解来实现服务器和容器的各自责任
容器提供服务:数据存储
- 容器决定何时载入/储存状态
- Container-Managed Persistence(容器管理存储/CMP)
- Bean-Managed Persistence(Bean 管理存储/BMP)
- Bean 开发人员提供存储代码
- 开发人员决定 如何存储, 容器仍然决定 何时进行
容器提供服务:事务处理
- 可以由容器代理来实现
- 容器将得到业务逻辑方法的事务处理需求
- 容器提供事务控制代码
- 也可以由程序员通过代码实现
容器提供服务:其它服务
- 其它服务包括
- 命名 (Naming)
- 安全 (Security)
- 线程管理 (Thread management)
- 这些服务由容器代理完成将减少应用开发人员的负担
分布式对象运算
- 远程对象被作为本地对象来处理:传递信息的方式不变,但开销更大
- Enterprise JavaBeans 永远运行在服务器上:对 Bean 的访问永远是远程调用
Stub 和 Skeleton
- 由 EJB 生成:
- "Stub" 对要传递出去的信息编码
- "Tie/Skel" 将接受到的信息解码并传递给目标对象
分类: EnterpriseJavaBeans
会话 Bean (Session Bean) 根据 EJB 规范,一个会话 Bean 是:
- 代表单个客户端来执行
- 可以参与到事务处理中
- 不直接代表共享于数据库中的数据,但它能访问和更新这些数据
- 相对而言是短暂存在的
- 当 EJB 容器失效后就不存在---客户端需要重新建立一个信新的会话对象来继续运算
实体 Bean (EntityBean):根据 EJB 规范,一个实体 Bean 是:
- 提供在数据库中数据的对象视图
- 允许被多个用户共享存取访问
- 可以是长期存在 (只要它存在于数据库中)
- 实体 Bean, 它的主键对象, 以及它的远程引用将能跨 EJB 容器的宕机而存在
EJB 类和实例
- 构建 EJB 应用包括来自三方的代码
- 开发人员编写的代码
- 由 EJB API 定义的类和接口
- 由容器自动生成的代码
- 开发人员编写的代码包括
- Bean 类 (定义了业务逻辑)
- Home 接口 (如何查找或创建 bean)
- Remote 接口 (如何存取 bean)
- 其它组件,根据 bean 实际要求
EJB Home 接口
- 每个 bean 有一个
- 用于:创建新的 bean 实例、查找现存的 bean (只能是实体 bean)
Remote 接口 :定义 bean 的公共接口---只有在 Remote 接口中定义的方法才能被客户端访问
EJB 客户端
- 可以为 servlet, JSP, 应用程序或其它 bean
- 通过 JNDI 来查找 EJB home 接口,步骤为:
- 创建一个 JNDI Context (initial context)
- 使用 JNDI Context 来查找 bean home 接口
- 使用 bean home 接口来创建/查找 bean 实例
- 使用 bean 实例完成业务操作
- 实际的存取 (对 EJB) 是通过容器生成的类来完成
EJB 架构
- 客户端对 bean 访问永远不是直接的
- EJBObject (tie) 是由容器自身提供的:用来帮助管理 bean 的生命周期
EJB 中的角色
- EJB 服务器供应商: 开发并销售 EJB 服务器
- EJB 容器供应商: 开发并销售 EJB 容器
- Enterprise bean 开发人员: 开发并销售 EJB
- 应用组装人员: 将不同的 EJB 搭建成应用
- 部属人员: 使用相应工具在运行环境下配置 EJB
- 系统管理员: 监视运行时情况
EJB 开发流程
您学到了哪些
- EJB 是构建健壮,可扩展并支持事务处理的分布式对象技术规范
- 有两种类型的 EJB: Session Bean 和 Entity Bean
- 一个 EJB 服务器使用 EJB 容器;容器来管理其所包容 bean 的生命周期
- 每个 bean 将有三个类: bean 类, home 接口和 remote 接口
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130484/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130484/