EJB系列教程之三

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

一、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来控制的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航