[4001] 生命周期回调方法应遵循如下规则:
1.对于直接定义在Bean类中的回调,其格式应该是public void <Method()>。
2.对于Bean类单独提供(单个或多个)回调监听器类(拦截器)而言,其格式是public void<METHOD(InvocationContext ctx)>。java.interceptor.InvocationContext提供了调用上下文信息。
3.不能够抛出应用异常,但可以抛出运行期异常。如果在事务中抛出了运行期异常,事务将回滚。
4.不能够为回调监听器实施依赖注入。
注释 |
描述 |
典型实现(无状态) |
典型实现(有状态) |
@PostConstruct |
在实例化Bean类后,Ejb容器会调用它 |
根据Bean实例的需求来完成相应的初始化工作,比如将传入的参数值赋给成员变量。 |
根据Bean实例的需求来完成相应的初始化工作,比如将传入的参数值赋值给成员变量。 |
@PrePassivate |
在挂起Bean实例前,容器会立即调用它(由于内存中存在太多的Bean实例,因此需要将会话状态保存到磁盘中) |
未使用。 |
释放Bean实例可能持有的任何资源。 |
@PostActivate |
在激活Bean实例后,容器会立即调用它(由于客户需某Bean实例,因此需要将以前的会话状态交换到内存中) |
未使用。 |
Bean实例重新获得所需要的任何资源,比如哪些在执行@PrePassivate回调期间释放的资源。 |
@PreDestroy |
在结束对@Remove方法的调用之后,而在销毁Bean实例之前,Ejb容器会立即调用它 |
为销毁Bean实例做准备。释放已分配给它的所有资源。 |
为销毁Bean实例做准备。释放已分配给它的所有资源。 |
</script>