EJB中的Home与Remote接口

    学习EJB过程中,看到Home接口和Remote接口经常出现,在这里整理和总结一下,希望对java初学者有一定的帮助。   

    从英文的角度,我们很容易想到Home代表着本地的意思,从而推出,它调用的必然是本地的方法。实际上,Home

就是用来产生EJB对象的,它也提供了产生和定位remote接口实例的方法。 

    而Remote,是远程的意思,调用的肯定是远程方法,对客户端来说就是调用的远程服务。Remote接口由用户调

用,并通过其获得EJB对象的引用。在Remote接口中提供了客户调用Enterprise bean实现的应用逻辑函数的接口。

    总结起来,就是Enterprise beans提供者定义了远程(Remote)接口和本地(home)接口,实现了Enterprise 

bean类本身。


    远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接

口类型的实例被使用。

    除此之外,还有一个Local接口,它和LocalHome都是本地接口,是EJB2.0里面新加入的。因为EJB都是远程调用,

所以非常占用资源,就增加了这两个接口,他们是在当EJB之间调用时,就可以不用通过远程方法调用了,这样主要

是处于执行效率考虑的。

    Entereprise bean提供者定义了Enterprise bean的语义。容器的任务是把Home接口,Remote接口和Enterprise

 bean的实现类结合起来。保证在编译时和运行时,Remote接口和Bean的实现类是相对应的。  

    Enterprise bean的继承关系:Enterprise bean的实现类,Remote接口,Home接口都要从不同的基类中继承下

来。Home、Remote接口分别是从javax.ejb.EJBHome和javax.ejb.EJBObject中继承而来。Remote和Home接口的基类都

是javax.rmi.Remote。   


    具体分析一下Remote接口:  

    每一个Enterprise bean都必须有一个Remote接口。Remote接口定义了应用程序规定客户可以调用的逻辑操作。

这些是一些可以由客户调用的公共的方法,通常由Enterprise beans类来实现。注意,Enterprise bean的客户并

不直接访问Bean。而是通过Remote接口来访问。  

    EJBObject基类:Enterprise bean类的Remote接口扩展了javax.ejb.EJBObject类的公共java接口。而

Javax.ejb.EJBObject是所有Remote接口的基类。

    方法的要求:所有的remote接口中的方法必须声明为公共的,并必须抛出java.rmi.RemotException

异常。对每一个在Remote接口中定义的方法,在Enterprise bean类里面都要有相应的方法。相应的方法必须要有同

样的名字,同样类型和数量的参数,同样的返回值,而且还要抛出同样的异常。  


    Home接口:

  
    Enterprise bean的Home接口控制着bean的生命周期。提供了Enterprise bean对象(也就是对Enterprise bean

的实例)的Create(),Find(),Remove()操作。会话bean和实体bean有不同的生命周期。所以,它们的Home接

口必须定义不同的方法。Enterprise bean的提供者必须定义Home接口,而由EJB容器来实现Home接口。   

    与Remote接口相似,Home接口中所有的方法必须抛出java.rmi.RemoteException异常。Home接口必须定义一

个或多个的Create()方法。每一个这样的Create()方法都必须命名为Create。并且,它的参数,不管是类型还是数量

都必须与bean类里面的ejbCreate()方法对应。

     

    总结:对Home和Remote接口,我目前只是有一个比较浅显的认识和理解,仅仅认识到它的基本作用和使用机制。随着之后Java的深入学习,对这部分内容的实践还会继续深入探讨。

    

Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax.ejb.AfterCompletion.class javax.ejb.ApplicationException.class javax.ejb.Asynchronous.class javax.ejb.AsyncResult.class javax.ejb.BeforeCompletion.class javax.ejb.ConcurrencyManagement.class javax.ejb.ConcurrencyManagementType.class javax.ejb.ConcurrentAccessException.class javax.ejb.ConcurrentAccessTimeoutException.class javax.ejb.CreateException.class javax.ejb.DependsOn.class javax.ejb.DuplicateKeyException.class javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax.ejb.EJBMetaData.class javax.ejb.EJBObject.class javax.ejb.EJBs.class javax.ejb.EJBTransactionRequiredException.class javax.ejb.EJBTransactionRolledbackException.class javax.ejb.embeddable.EJBContainer.class javax.ejb.EnterpriseBean.class javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopbackException.class javax.ejb.Init.class javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb.NoMoreTimeoutsException.class javax.ejb.NoSuchEJBException.class javax.ejb.NoSuchEntityException.class javax.ejb.NoSuchObjectLocalException.class javax.ejb.ObjectNotFoundException.class javax.ejb.PostActivate.class javax.ejb.PrePassivate.class javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb.SessionBean.class javax.ejb.SessionContext.class javax.ejb.Session
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值