Session Bean的生命周期事件

Session bean的生命周期里,状态变化会触发生命周期事件的发生,有些时候,需要定制session bean的管理过程,例如,我们可能想在创建session bean实例的时候初始化字段变量,或在bean实例被销毁的时候关掉外部资源,上述这些都可以通过在bean类定义生命周期的回调方法来实现。这些方法将会被容器在生命周期的不同阶段调用。通过使用注释,EJB3.0允许我们将任何方法指定为回调方法,这不同于EJB2.1,所有的回调方法必须实现,即使是空的,在EJB3.0中,bean可以有任意数量,任意名字的回调方法。

@PostConstruct:当bean对象完成当bean对象完成实例化后,标注了这个注释的方法会立即被调用, 每个bean class只能定义一个@PostConstruct方法,适用于有状态和无状态的会话bean

@ProDestroy:标注了这个注释的方法会在容器销毁一个无用或者过期的bean实例之前被调用,适用于有状态和无状态会话bean。

@PrePassivate:当一个有状态的bean实例空闲时间过长,就会发生钝化(passivate)。标注了这个注释的方法会在被钝化之前被调用,bean实例被钝化后,在一段时间内,如果任然没有用户对bean实例进行操作,容器将会从硬盘中删除它,以后,任何针对该bean方法的调用,容器都会抛出例外,这个注释用于有状态会话bean。

@PostActivate:当客户端再次使用已经被钝化的有状态bean时,EJB容器会重新实例化一个Bean实例,并从硬盘中将之前的状态恢复。标注了这个注释的方法会在激活完成时被调用。这个注释只适合于有状态会话bean。

@Init:这个注释指定了又状态bean初始化的方法,他区别于@PostConstruct注释在于:多个@Init注释方法可以同时存在于有状态session bean中,但每个bean实例只会有一个@Init注释方法被调用
@PostConstruct
@Init之后调用。

@Remove:当客户端调用标注了@Remove注释的方法时,容器将在方法执行结束后把bean实例删除。

要处理这些生命周期事件,我们可以为这些事件注册一个回调方法,回调方法可以使用任何名称,但是它必须是无返回值(void),不带参数,切不能抛出任何异常,事件注册的过程很简单,只需要在回调方法上面加上事件注释就可以。

LifeCycle.java

 LifeCycleRemote.java

 客户端代码
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值