那是本地和远程的区别
一开始EJB规范没有本地接口,所有的业务方法都是远程操作,导致EntityBean性能巨差
后来规范补充了远程接口,人们不再使用远程接口操作EntityBean进行fine-grained操作,
并且出现了Session Facade等很多种coarse-grained调用模式如果不考虑负载平衡,高可用性等特征,本地方法肯定是要快的,所以你看的那些不负责任的书才会这么说。

解决方案 »

  1.   

    EJBLocalHome在同一个jvm环境里使用
      

  2.   

    有些书上说localhome没有网络功能啊,比如它的create方法不用throws java.rmi.RemoteException,
    还说只有在同一个线程里才能用localhome,这个同一线程指什么,我越来越糊涂了,是不是现在没几个人用ejbhome,都用localhome去生成local对象啊
      

  3.   

    是不是客户端和ejb在同一台机子上就可以用localhome,比如我的
    servlet和ejb在同一台机子上,我用servlet去找home接品,就可以用localhome是吗?
      

  4.   

    是不是客户端和ejb在同一台机子上就可以用localhome,比如我的
    servlet和ejb在同一台机子上,我用servlet去找home接品,就可以用localhome是吗?
      

  5.   

    ------------------
    是不是客户端和ejb在同一台机子上就可以用localhome,比如我的
    servlet和ejb在同一台机子上,我用servlet去找home接品,就可以用localhome是吗?-----------------
    可以这么说吧
    同一台机子上为了提升性能,不用经过客户<->服务器这个远程的过程 (当然也就不抛出RemoteException)
      

  6.   

    一般情况下不是把serlvet和jsp打成war包把ejb打成jar包再把两个包打成ear包,发布到服务器上,
    而且基本上对ejb而说的客户段和ejb都在同一台机子上,那么reomote接口还有什么意义呢,经常说分布式,我感觉只有IE对服务器是分布式,组件的分布式有没有人用过是怎么用的。
    比如我在servlet中lookup另一台机子上的一个ejb,那么我是不是在ejb-jar.xml里要写出另一台机子的ip什么的,不然的话,如果我在机子上有一个ejb叫Hello,在另一台子上也有一个jndi叫Hello那么我是找哪个。
      

  7.   

    >>有些书上说localhome没有网络功能啊,比如它的create方法不用throws ava.rmi.RemoteException,还说只有在同一个线程里才能用localhome,这个同一线程指什么,我越来越糊涂了,是不是现在没几个人用ejbhome,都用localhome去生成local对象啊确实没有,所以不能load balance,同一线程这种说法没听说过,估计是指同一JVM,EJB里不允许自己建线程的,因为JAAS是线程绑定的,还有事务管理等其他原因。>>是不是客户端和ejb在同一台机子上就可以用localhome,比如我的servlet和ejb在同一台机子上,我用servlet去找home接品,就可以用localhome是吗?客户端和ejb在同一台机子上,可用localhome.但是大的系统通常有cluster的,为了高可用性和负载平衡,通常用远程接口,只对于访问频繁的EJB采用本地接口。如果客户端和ejb在同一台机子上,也可以用远程节口,对于大多数商业级服务器比如WebLogic和WebSphere,他会把pass-by-value优化为pass-by-ref,所以性能和localhome差不多。因此,很多时候,都不怎么把localhome用于session bean.>>经常说分布式,我感觉只有IE对服务器是分布式,组件的分布式有没有人用过是怎么用的。
    比如我在servlet中lookup另一台机子上的一个ejb,那么我是不是在ejb-jar.xml里要写出另一台机子的ip什么的,不然的话,如果我在机子上有一个ejb叫Hello,在另一台子上也有一个jndi叫Hello那么我是找哪个。产品环境下大系统一般lookup的不是IP,是DNS映射的集群地址如果没有集群,防火墙DMZ,网络拓扑, 异构
    分布式就没什么可谈了,所以,你先去了解这些知识吧
      

  8.   

    客户端跟EJB如果在同一台机器上的,也就是说在同一个JVM里的,一般用EJBLocalHome,这样速度快,也安全,当然用EJBHome也是可以的。EJBHome常用在分布式系统中。远程Home接口:
    1)、必须继承javax.ejb.EJBHome
    2)、名字是EJB+Home
    3)、内含create()方法本地Home接口:
    1)、必须继承javax.ejb.EJBLocalHome
    2)、名字是EJB+LocalHome
    3)、内含create()方法
      

  9.   

    有谁用过两个不在同一jvm的组件调用的,
    比如我在一个session bean里lookup另一台机子上的entity bean的remote,
    难到说xml里的写法和本地调用一样吗?
      

  10.   

    DanielYWoo(绿色毒汁) 和 sgdb(神天月晓) 两个人的结合就是你要的答案:)
      

  11.   

    为什么我在有些书上看到尽量用local,
      

  12.   

    应该是你断章取义了。如果那本书没有上下文就真得这么说,那本书你就不用看了,扔了吧。
    其实不用看太多的书,概念和架构方面看Sun的J2EE tutorial和pet store,然后实践方面看WebLogic或者WebSphere的文档,还有就是经常看看Sun Tech Tip和Best Practice就够拉。
      

  13.   

    如果客户端和EJB容器在同一台电脑上用 EJBLocalHome接口,可以免去rmi调用远程接口的开销,当然要快点