服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

ejb系列教程之三

  一、session beans简单介绍

  session beans通常用于一个客户端的会话。session beans中的事件通常执行为客户端设置的任务和进程。它仅仅存在在客户连接的过程中,也可以说,session beans体现ejb server的client , 它通常为client提供服务。除了你必须用到持续不变的数据外,通常使用session beans。

  二、两种类型的session beans

  有态session beans和无态session beans。

  有态session beans用于单个client,用来保持这个client的状态信息。例如,网上购物中的用户定单就是一个session beans。客户从物品列表中选取物品到定单中。最后,客户要通过它来计算总价,付款。

  无态session beans用于多个client,它不由单个client所控制。例如:聊天室中,聊天人的列表就是一个无态session beans,因为每加一个人,该列表都会变化的。

  三、生命周期

  (1)有态session beans当client调用session bean 的home接口的create()事件的时候就开始存在。container就开始建立一个新的session bean实例,并且初始化,返回信息给clinet端。在这个过程中,container调用sessionbean接口的setsessioncontext()事件和ejbcreate()事件。

  当一个client通过远程或者home接口调用remove()事件时,container将调用ejbremove()事件,以后,这个bean的生命周期就结束了。此时,如果client试着再去调用beans的事件,将产生一个java.rmi.nosuchobjectexception异常。

  (2)无态session beans当client调用session bean 的home接口的create()事件的时候就开始生存。container就开始建立一个新的session bean实例,返回信息给clinet端。在这个过程中,container调用sessionbean接口的setsessioncontext()事件和ejbcreate()事件。这个新的bean就被加到一个“池”中,供client端用。由于不带任何client端特有的状态,所以这个“池”中的任何beans都可以被client端用。

  当container从“池”中移掉一个对象的时候,将调用bean对象的ejbremove事件。需要注意的是:调用create()和remove()事件,并不能从无态session beans的 "池"中增加和移走无态session beans。在整个过程中,无态session beans的生命周期是由container来控制的。

扫描关注微信公众号