会话 Bean 的创建与生命周期详解
1. 会话 Bean 创建期间的操作权限
在 setSessionContext()
方法内部,你可以访问 Bean 的主接口和 Bean 的 JNDI 上下文,但仅此而已。 setSessionContext()
方法调用之后会接着调用 ejbCreate
方法。那么在 ejbCreate()
方法内部能访问什么呢?
当调用 ejbCreate()
方法时, setSessionContext()
方法已经执行完毕,会话上下文已分配给 Bean,并且该实例的 EJBObject 也已创建。这意味着 Bean 正在逐步具备其完整的功能。
以下表格展示了有状态会话 Bean 和无状态会话 Bean 在 ejbCreate
方法中允许和禁止的操作:
| 操作 | 有状态会话 Bean | 无状态会话 Bean |
| — | — | — |
| 获取 Bean 主接口的引用 | 是 | 是 |
| 获取 Bean 的 EJBObject 引用,即组件接口的引用 | 是 | 是 |
| 获取安全信息 | 是 | 否 |
| 标记当前事务回滚;CMT Bean | 否 | 否 |
| 判断事务是否已标记为回滚;CMT Bean | 否 | 否 |
| 获取事务引用;BMT Bean | 是 | 否 |
| JNDI 访问 | 是 | 是 |
|