级别: 新手上路
UID: 16131
精华: 0
发帖: 2
威望: 3 点
金钱: 20 RMB
贡献值: 0 点
注册时间: 2007-01-07
最后登录: 2007-01-12
楼主  发表于: 2007-01-28 09:49

 关于EJB中的远程方法和本地方法

想请教一个问题。EJB写倒是写了不少,看过的更多,可是还是不能对其中的 远程方法/(接口)和本地方法(接口)产生深刻的认识,所以想请教一下高手们,它们之间的区别到底是什么?我写代码的时候为什么很多地方用远程方法可以,用本地方法也可以?这样一来他们之间的区别界限不就很模糊了么?

谢谢赐教!
级别: 新手上路
UID: 19
精华: 0
发帖: 23
威望: 21 点
金钱: 194 RMB
贡献值: 0 点
注册时间: 2005-03-29
最后登录: 2009-02-22
1楼  发表于: 2007-11-30 17:26
远程方法是需要实现远程接口和抛出RemoteException的,本地方法不用.调用Bean的远程接口时,javax.rmi.PortableRemoteObject的“narrow()”方法汇集经过RMI的调用。对于本地引用,这种开销就不再必要,这时只需简单地进行JNDI查找并进行适当的类型定型。

和你讨论C++,JAVA,CISCO路由,线性代数,矩阵算法,高数,共同进步:)
级别: 新手上路
UID: 19
精华: 0
发帖: 23
威望: 21 点
金钱: 194 RMB
贡献值: 0 点
注册时间: 2005-03-29
最后登录: 2009-02-22
2楼  发表于: 2007-11-30 17:29
本地接口不是必须的,实体BEAN用的比较多.

和你讨论C++,JAVA,CISCO路由,线性代数,矩阵算法,高数,共同进步:)
级别: 总版主
UID: 1
精华: 4
发帖: 909
威望: 586 点
金钱: 4752 RMB
贡献值: 0 点
注册时间: 2005-03-21
最后登录: 2009-05-27
3楼  发表于: 2007-12-01 13:48
远程方法是用来提供远程调用的,当EJB的客户端和EJB组件不在一个虚拟机进程中的时候,就需要进行远程调用,那么这个时候就必须通过远程接口调用,而如果EJB和客户端在一个虚拟机进程中的时候则可以进行本地调用,这样调用原理就是本地的对象调用,比远程调用的效率要高很多,这就是EJB的远程接口与本地接口的区别。如果在同一个虚拟机进程中,客户端对EJB的调用可以通过远程接口也可以通过本地接口调用,但是远程接口走的是网络远程调用的路线,效率比较低。
知识共享,共同进步。