无状态sessionbean.ppt

上传人:本田雅阁 文档编号:3268620 上传时间:2019-08-07 格式:PPT 页数:10 大小:283.02KB
返回 下载 相关 举报
无状态sessionbean.ppt_第1页
第1页 / 共10页
无状态sessionbean.ppt_第2页
第2页 / 共10页
无状态sessionbean.ppt_第3页
第3页 / 共10页
无状态sessionbean.ppt_第4页
第4页 / 共10页
无状态sessionbean.ppt_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《无状态sessionbean.ppt》由会员分享,可在线阅读,更多相关《无状态sessionbean.ppt(10页珍藏版)》请在三一文库上搜索。

1、无状态sessionbean,2,什么是无状态Session Bean?,无状态Session Bean每次调用只对客户提供业务逻辑,但不保存客户端的任何数据状态。但并不意味着stateless类型的Bean没有状态,而是这些状态被保持在客户端,容器不负责管理。如再别康桥中写到的“悄悄的我走了,正如我悄悄的来。挥一挥衣袖,不带走一片云彩“。 无状态Session Bean在EJB中是最简单的一种Bean,如果数据实际上是数据的瞬像,则建议使用无状态会话Bean。但是无状态会话Bean也有自己的问题,本该存储在服务器端(J2EE服务器)的数据被存储在客户中,每次调用这些数据都要以参数的方式传递给

2、Bean,如果是一个比较复杂的数据集合,则网络需要传递大量数据,造成更多的负载。在客户端维护状态还要注意安全性问题,如果数据状态非常敏感,则不要使用无状态会话Bean,这些情况可以使用状态会话Bean,将用户状态保存到服务器中。,3,无状态会话Bean的生命周期,无状态Session Bean寿命周期由容器控制,Bean的客户并不实际拥有Bean的直接引用,当我们部署一个EJB时,容器会为这个Bean分配几个实例到组件池(component pooling)中,当客户请求一个Bean时,J2EE服务器将一个预先被实例化的Bean分配出去,在客户的一次会话里,可以只引用一次Bean,就可以执行这

3、个Bean的多个方法。如果又有客户请求同样一个Bean,容器检查池中空闲的Bean(不在方法中或事务中,如果一个客户长时间引用一个Bean但执行一个方法后需要等待一段时间再执行另一个方法,则这段时间也是空闲的),如果全部的实例都已用完则会自动生成一个新的实例放到池中,并分配给请求者。当负载减少时,池会自动管理Bean实例的数量,将多余的实例从池中释放。 无状态Session Bean有两种状态:存在或不存在。,4,无状态会话Bean的生命周期,当客户端不存在一个无状态Session Bean时,通过远程主接口的create()方法创建一个Bean,newInstance()负责将Bean实例化

4、,EJB容器调用Bean类的setSessionContext()方法把运行环境对象SessionContext传递给Bean;随后调用Bean的ejbCreate方法进行必要的初始化和资源分配。在下面这个实战例子中,Bean的实现类就是StatelessDateEJB类。,5,开发步骤,1) 声明HOME接口 2) 声明远程接口 3)实现Bean类 4)客户端编程 5) 部署描述文件,6,无状态会话Bean开发的几点说明,(1) EJB Home接口 (A) Home接口必须继承javax.ejb.EJBHome接口。 (B) 客户端调用create()方法来获得对EJB对象的引用。无状态的

5、会话 bean仅拥有一个create()方法,而且该方法不能接受任何参数。create()方法抛出java.rmi.RemoteException和javax.ejb.CreateException异常,7,(2) EJB Remote接口 (A) Remote接口必须继承javax.ejb.EJBObject接口。 (B)业务逻辑方法抛出java.rmi.RemoteException异常。,8,(3)EJB类 (A) javax.ejb.SessionBean接口 每个会话 Bean都必须实现javax.ejb.SessionBean接口,在javax.ejb.SessionBean接口中

6、定义的方法都必须在实现类中实现。EJB容器需要使用这些方法对Bean进行管理。 (B) SetSessionContext()方法 SetSessionContext()方法让Bean和一个Context对象关联起来,Context对象存放了Bean的一些环境信息,可以使用这个对象存取环境信息。对于每个会话bean,setSessionContext方法都会被调用一次,这也是Bean初始化的一部分。,9,(C) ejbCreate()方法 对于Home接口中的create方法,在实现类中都必须有一个相应的ejbCreate方法。 (D) ejbRemove()方法 EJB容器调用会话Bean的

7、ejbRemove方法来使Bean的服务停止。这时Bean应该要清除它保留的全部资源。 (E) EjbActivate()和ejbPassivate()方法 EjbActivate()和ejbPassivate()方法是用于Bean的激活(Activated)和钝化(Passivated)的,在无状态Session Bean中没有使用。 (F) EJB类必须实现Home接口中create方法,以及Remote接口中指定的全部方法,10,无状态会话Bean的生命周期,首先,应用服务器初始化Bean的实例,EJB容器在初始化Bean实例时,首先调用newInstance(),这相当于调用会话 Bean类的构造函数;然后EJB容器调用setSessionContext()方法,把context对象和Bean实例相关联;接着客户端的调用创建EJB对象,创建同时传递给Bean实例的ejbCreate()方法。EJB对象和Bean实例都创建完毕后,客户端就可以调用Bean实例的方法。 客户端调用remove()方法删除EJB对象,而是否需要删除Bean实例,取决与EJB容器。跟客户端打交道的都是EJB对象,而不是Bean实例。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1