理解 EJB 组件----Home 接口

来源:互联网 发布:台湾人不是中国人 知乎 编辑:程序博客网 时间:2024/06/04 18:42

你现在应该已经熟悉了整个 EJB 体系结构及其主要的部件。这一节更详细地描述了这些
部件,并解释它们运行时的行为语意。


Home 接口
EJB 库使用enterprise bean 的客户端通过它的home 接口创建它的实例。Home 接口包含一
个或多个用来创建 enterprise bean 实例的create()方法。这个home 接口不是由bean 来
实现,而是通过称为 home object 的类来实现。一个home object 的实例在服务器中实例
化,使得客户端可以访问它们。
定位 home object 一个home object 的引用被放在名字服务中,客户端能通过JNDI 访问
它。EJB 服务器一般提供某种名字空间的实现,虽然有时可以使用外部的名字空间。在
这两种情况下客户端都必须知道名字空间的位置以及 JNDI 的上下文类。例如,一个客户
端的 applet 可能接收名字空间和JNDI 上下文类作为applet 的参数。

 

除了提供位置和类名,客户端也必须知道在名字树中定位home object.这些必须在客户
端启动时提供。当部署者把 enterprise bean 部署进EJB 服务器中时,他必须可以以参数
形式指定名字树,如 ejb/accounting/AccountsPayable.客户端必须获得这个完整的路
径名来定位并获得 AccountsPayable home object 的引用。并不是说客户端通过JNDI 获
得容器。客户端使用 JNDI 查找home 接口的实现。Home 接口的实现由某个特殊的
container 来提供,但这是该容器厂商的细节,enterprise bean 开发者和客户端应该忽
略它。
Home 接口中的方法


Enterprise bean 开发者定义ejbCreate()方法的同时必须在home 接口中声明与其相应的
create()方法。实体bean 可以包含finder 方法以使得客户端能定位已有的实体bean.
Home 接口是通过继承javax.ejb.EJBHome 来定义的。该接口包含如下的方法:

public interface javax.ejb.EJBHome extends Remote {


public EJBMetaData getEJBMetaData() throws RemoteException;


public void remove(Handle handle) throws

RemoteException,RemoveException;


public void remove(Object primaryKey) throws
RemoteException,RemoveException;


一个 bean 的home 接口可以象下面这样:


public interface myHome extends EJBHome {
public myRem create() throws RemoteException,CreateException;
public myRem create(String str) throws
RemoteException,CreateException;

其中
public interface myRem extends EJBObject { … }
容器开发商负责提供实现 home 接口的home 对象,因为只有开发商才能实现存贮
enterprise bean 的库的编码。