- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会话bean生命周期
有状态的
客户(create)Home桩
Home桩(create)Home对象
Home对象(建立)EJBObject对象
Home对象通过容器(“服务”)建立bean
Home对象把EJBObject对象桩返回给客户
客户在EJBObject对象桩上调用业务方法
EJBObject对象得到业务方法调用
容器介入,在bean上调用相应的业务方法
有状态的会话bean特殊时刻:
bean创建(客户需要一个bean时)
bean使用(客户调用一个业务方法时)
bean钝化(为节省资源,以某种方式让bean“休息”)
bean激活(唤醒bean,以使bean提供业务方法服务)
bean删除(客户用完bean时,或超时)
无状态的会话bean特殊时刻:
bean创建(容器需要创建一个bean时)
bean使用(客户调用一个业务方法时)
bean删除(容器认为池里面的bean太多时)
容器回调:
出现一个特殊时刻,bean不知道,容器调用了bean的一个容器回调方法时它才知道。容器回调出自两个接口中的方法。
XHome { create( ) } //home接口
SessionBean //SessionBean接口
{
setSessionContext(SessionContext sc)
ejbActivate( )
ejbPassivate( )
ejbRomove( )
}
XBean
{
ejbCreate( )
setSessionContext(SessionContext sc)
ejbActivate( )
ejbPassivate( )
ejbRomove( )
//组件接口中的业务方法,不是容器回调函数
}
实现容器回调函数
可以为空代码
一般需要保留context,典型方法如下:
public class XBean implements SessionBean {
private SessionContext context; //实例变量
private String name //其它实例变量
public setSessionContext(SessionContext ctx) {
context = ctx;
}
public void ejbCreate(String aName) {
name = aName;
}
// 业务方法,不能以ejb开头
如上所示,一般需要实现若干create方法.
容器回调发生时刻:
bean的状态划分:
“不存在”:不具备真正bean所需要的性质
“就绪”:正在执行或等待执行一个业务方法
“钝化”:临时保存在辅存中,以节省资源
(下面编号不代表顺序)
“不存在”-“就绪”
依次调用构造函数、setSessionContext、ejbCreate
“就绪”-“不存在”
ejbRemove或超时
“就绪”-“钝化”
ejbActivate
“钝化”-“就绪”
ejbPassivate
“钝化”-“不存在”
超时
-“不存在”
bean抛出系统异常(非受查、未捕获)
备注:bean从一个对象变成bean时发生的事情
在调用构造函数之前,可理解为:bean连一般的对象都不是,而执行完构造函数之后,至少已经是一个对象了。
SessionContext是bean到容器的唯一生命线,利用它,bean等得到很多信息,包括:bean的home的引用、EJBObject对象的引用、有关客户的安全信息、要求一个事务回滚、确定事务是否回滚、得到一个事务引用,并在上面调用方法。
每个bean都有它自己特有的JNDI上下文,通过它,bean可以找到很多东西,包括:资源管理连接工厂的引用、其它bean的引用、一些部署时的常量值、一个表示JMS目标的“受管对象”资源。
可以访问其它bean和资源(如:数据库)。
在业务方法中可以通过上下文访问相关信息。
有状态会话bean创建过程:
客户在home桩上调用create
容器建立EJBObject对象和SessionContext对象
容器构造bean实例(构造函数,Java对象)
容器把bean实例、SessionContext对象、EJBObjectdu对象连接起来,此过程通过在bean实例上调用setSessionContext和ejbCreate。一旦调用完毕,bean实例便称为真正bean,到“就绪”状态.
备注:
编写与创建相关的三个函数
构造函数建议为空,可使用自动生成的;用实例变量保存上下文;所有初始化代码放在ejbCreate中,其返回值类型为void,而对应在home接口中create的
文档评论(0)