ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转载]Enterprise JavaBeans 概览

[转载]Enterprise JavaBeans 概览

原创 Linux操作系统 作者:dinner1007 时间:2019-05-19 15:33:05 0 删除 编辑

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 服务器



回页首


EJB 容器

  • 管理 Bean 生命周期:将 EJB 服务器提供的服务传递给 Bean
  • 生成代码来实现对 Bean 的存取访问
    • 强制事务处理的限制
    • 创建、初始化和回收 Bean
    • 管理持久数据的存储
  • 对客户端而言 EJB 容器是透明的



回页首


在一个 EJB 服务器中的容器

  • 目前容器通常是由 EJB 服务器本身提供的
    • 在 EJB 1.0 或 1.1 规范中没有定义容器-到-服务器的接口
    • 各厂商可以根据他们的见解来实现服务器和容器的各自责任




回页首


容器提供服务:数据存储

  • 容器决定何时载入/储存状态
  • Container-Managed Persistence(容器管理存储/CMP)
    • 容器负责存储您的 Bean
    • 容器生成必要的类和代码
  • 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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-08-23

  • 博文量
    1367
  • 访问量
    1007888