实体 Bean 的创建与识别
1. ejbPostCreate 方法概述
ejbPostCreate 方法的命名规则是在对应的 create 方法名前加上“ejbPost”前缀,并且将“create”中的小写“c”替换为大写“C”。该方法有如下特点:
- 必须声明为 public,且不能声明为 static 或 final。
- 返回类型必须为 void,这与 ejbCreate 方法不同,ejbCreate 方法的返回类型必须是主键类。
- 该方法可以声明 CreateException 和其他应用程序异常(如果这些异常在 Home 接口中声明过),但即使该方法对应于远程接口,也不能抛出 java.rmi.RemoteException。
需要 ejbPostCreate 方法的原因是,ejbCreate 方法对于完成 Bean 的某些初始化操作来说太早了。例如,在 ejbPostCreate 方法中可以获取 EJBObject 的引用,但在 ejbCreate 方法中则不能,因为在 ejbCreate 方法执行期间,EJBObject 还不存在。
2. Bean 创建期间允许的操作
在 Bean 构造执行期间,会为 Bean 实例分配一个上下文(EntityContext 的实例)。Bean 提供者可以在自己编写的 Bean 方法(如 ejbCreate 和 ejbPostCreate 方法)中使用此上下文来调用 EJBContext 上的方法。这些对 EntityContext 的方法调用以及用于访问其 JNDI 环境的方法调用也被称为操作。
以下是 ejbCreate 方法和对应的 ejbPostC