当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > EJB > 正文

EJB(Enterprise JavaBeans)入门(3)

http://www.zk168.com.cn  招考学习网 2006-4-11 3:08:12
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
EJB(Enterprise JavaBeans)入门(3)

本章节主要讲述:什么是一个会话 Bean (Session Bean);无状态和有状态会话 Bean 的区别;无状态会话 Bean 的生命周期 ;构建一个 Bean 所需的 Java 类型;如何在 VisualAge for Java 中开发和测试无状态会话 Bean 等。

本章讲述内容

  • 什么是一个会话 Bean (Session Bean)?
  • 无状态和有状态会话 Bean 的区别
  • 无状态会话 Bean 的生命周期
  • 构建一个 Bean 所需的 Java 类型
  • 如何在 VisualAge for Java 中开发和测试无状态会话 Bean

什么是一个会话 Bean?

  • 在客户端与服务器间的关系
    • 每个客户端有它自己的会话 Bean
    • 会话 Bean 通常不会被共享
  • 短暂存在:会话 Bean 通常用来提供服务,它们不代表长期存在的事物
  • 示例:计算器、购物车、命令处理器

Stateless 与 Stateful 会话 Bean 区别

  • 无状态 (Stateless)
  • 在不同方法调用间不保留任何状态
  • 事务处理必须在一个方法中结束
  • 通常资源占用较少;可以被共享(因为它是无状态的)
  • 有状态 (Stateful)
  • 可以在不同的方法调用间保持针对各个客户端的状态
  • 与客户端的联系必需被维持;通常开销较大

会话 Bean 的生命周期

  • 注意:
  • 客户端可以通过下列方法保持对对象的引用:对象的 stub (远程引用)保存下的对象 Handle
  • 这同时也避免了对象被回收
Bean 的引用可存放在 javax.ejb.Handle 类中,而它是可序列化的获得 Handle 的方法EJBObject.getHandle()从 Handle 取回 Bean 的引用Handle.getEJBObject()可以调用 isIdentical() 来判断不同引用所代表的 Bean 是否为同一个实例.

· 无状态会话 Bean 的生命周期

  • 生命周期非常简单:容器可以调用 Bean 的 remove() 方法来回收 Bean,来控制资源的使用


· 实例池 (Instance Pooling)

  • 我们如何在下列环境下生存?
  • 资源总是有限的
  • 客户数量总是不确定的
  • Instance pooling 将分担负载
  • 每个客户端认为它们有独享的实例
  • 它们, 实际上, 与其它客户端共享资源
  • Bean 被保留在池中直到被请求:它们从池中被激活,完成操作然后被返回
  • isIdentical() 对无状态会话 Bean 而言,永远返回 true

· 开发一个 Bean

  • 需要开发三种类
  • Home 接口
  • 定义如何创建 bean
  • 对无状态会话 bean 而言非常简单
  • 对其它类型的 bean,home 接口有更重要责任
  • 开发人员提供一个接口
  • 接口描述协议
  • 容器自动生成实现代码


(图片较大 请放大查看)

  • Remote 接口
  • 定义您的 bean 的协议:客户端如何访问您的 bean?
  • 所有的方法必需抛出 java.rmi.RemoteException,也可抛出其它与应用相关的异常
  • 不要将 "remote" 接口与 java.rmi.Remote 混淆---不同的概念

  • Bean 类
  • 提供您的 bean 的行为:实现在 remote 接口中定义的方法; 不直接 "implements" remote 接口

  • 容器将根据这些类的定义来生成运行时的支持代码

三种类


■开发人员编写                       □由容器生成

Calculator Stub 实现 Calculator 吗?

  • 客户端只与 Interface 类型交互--客户端永远无法存取 bean 类
  • 申明为接口类型的变量可以包容该接口的任意实现体--Stub 实现接口
  • Interface 定义协议--描述了 bean 所能理解的消息集合

· EJB 容器

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

· 在 VisualAge 的 EJB 开发

  • "EJB" 标签--通过添加特征出现在工作台 (Workbench) 上
  • EJB 组
  • 一组相关的 bean (VAJ 独有的概念)
  • 通常成为单个服务器/容器
  • 测试客户机--自动生成的客户端来测试您的 bean
  • 在 VisualAge for Java 直接调试部属--VisualAge 可用工具: debugger, inspectors, ...

· 开发一个无状态会话Bean 流程

  • 创建一个 "EJB 组"
  • 创建一个 Bean
  • 添加方法到 Bean
  • 提升方法到 "Remote" 接口中
  • 生成部属代码
  • 配置部属描述符 (deployment descriptor)
  • 启动服务器
  • 运行测试客户机

· 创建一个 "EJB 组"

  • 一个 EJB 组包含一组相关的 bean


· 创建一个 Bean


· 添加方法到 Bean 中

· 提升方法到 Remote 接口

  • 这个步骤将相应的方法加到 Remote 接口中


· 生成部署代码

  • 您可以:
  • 针对 EJB 组,将生成组中所有 bean 的部属代码
  • 针对单个 bean

生成的部属代码在哪?

  • 通常,您不需要考虑这些代码
  • 但您仍可以查看它们
  • 大量的部属代码是自动生成的

配置部属描述符(deployment descriptor)

  • 选取您的 EJB 组然后选择 "Add to > Server Configuration"
  • 在服务器配置窗口中,您可以配置部属信息


启动 Name Server

  • 从 "Workspace > Tools" 菜单中启动 WebSphere Test Environment

· 启动 EJB Server


运行测试客户机 :选取您的 bean,从弹出菜单中选择 "Run Test Client"


设置断点

  • 您可以如常规代码来设置断点:使用 debugger 来单步跟踪代码的执行
  • 在出现未被处理的异常时 debugger 也将被弹出:注意您要 kill 的线程

回顾: 创建无状态会话 Bean

  • 创建一个 "EJB 组"
  • 创建一个 Bean
  • 添加方法到 Bean
  • 提升方法到 "Remote" 接口中
  • 生成部属代码
  • 配置部属描述符 (deployment descriptor)
  • 启动服务器
  • 运行测试客户机
(未完待续)
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·环保企业人力资源开发与管理的实证研究————巨龙公
·重油制气污水处理系统(A/O)技术改造
·BOG压缩机在液化石油气基地的应用
·英美CPA管理模式及其启示
·改造NERA微波公务信道为国产监控信道
·LFCB-102型微波分相差动保护的应用
·EAStudio让电子商务网站如虎添翼
·基于PB6和ORACLE8开发“劳动信息管理系统”
·巧解Pretty  Park 病毒一例
·利用TDC组件实现对WEB页面的交互操作
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>