不用home,那你的remote怎么得来了?
实际上,你用jndi得到home后,create时作了两件事,一是通知ejb容器new instance(如果有必要),二是返回remote,让你才能远程调用一些方法local是因为客户端和ejb在一个jvm里,为了避免网络开销,而使用ref的一种方法

解决方案 »

  1.   

    remote接口是由home.create()得到的,用remote接口的方法才可以使用ejb.
    remote接口里才有业务逻辑的方法。home接口的存在好像只是为了得到remote接口。
    我也觉得从理论上讲一个interface一个实现类就可以完成一个远程调用。好像DCOM就是这样的,至于j2ee里面为什么这样设计,我也不是弄得很明白。不过这样设计2个接口和设计1个接口也没有本质上的区别呀!本地客户也可以使用远程接口访问ejb,可是那样消耗资源。
      

  2.   

    本地用户和远程用户是怎么区别的啊?是在一台机器上的就是本地用户,其他的都是远程用户,还是有什么特别的说明啊??
    to  wangli8850(wangli)jvm??java虚拟机???
      

  3.   

    Home接口是必须要有的,因为你必须用Home创建一个bean类。然后远程接口才可以通过bean类运行业务方法
      

  4.   

    -----是在一台机器上的就是本地用户,其他的都是远程用户,-----
      在一个机器上既可以作为本地用户,也可以作为远程用户
      在不同的机器上是远程用户
      understand?
      

  5.   

    关于什么时候能够用local,这与应用服务器的实现方式还有一定的关系
    sun的规范好像是指在同一个jvm就能使用local(不知道理解的对不对)
    但是weblogic81好像只能是在同一个ear包中才能用local
      

  6.   

    要知道,local接口是ejb2.0才新加的,之所以要加local接口,就是为了提高在同一个jvm里调用ejb的效率,如果用remote接口,即使在同一个jvm,也要和在不同机子上一样,需要各种网络操作.为了取消这些不必要的操作,所以ejb2.0新加local接口,这样容器会优化程序,不用那些网络操作,直接调用本地接口,从而提高性能...
    楼主明白?