>>如果客户端下在了服务器端的一个Applet(从服务器端临时下载的),而这个Applet要访问服务器端的方法,那末这个Applet是如何动态的得到他所需要的stub文件呢?自己要使用codebase吗?<<
通过JNDI查找就可以得到stub文件,不需要使用codebase。stub就是简单的在网络上序列化传送而已,客户端本质上是用一个ObjectInputStream接收,再用接口类去强制类型转换就得到了。

>>是不是只要服务端和客户端在同一个java JVM中就可以这样写?<<
不管在不在一个JVM,都是这样写的。

多谢楼上几位,我先前看过robbin写到:
>>而Weblogic的narrow是不做任何事情直接返回,所以在Weblogic来说,用不>>用narrow都一样。因此在Tomcat里面去lookup Weblogic上的EJB,找到的>>Home stub你不用narrow也完全没有问题。

我开始以为在不同的Java JVM中或不同的机器上产生了这种差异,原来并非如此,只是和EJB服务器厂商(如Weblogic)的具体实现有关。
如果先前我没看过一点Enterprise Javabean 2的话,可能还真得不好理解,我要自己好好体会一下。

不过robbin的话令我感到奇怪的是EJB规范是Sun制定的,而sun自己实现的EJB Server却不尽如人意...

就拿Tomcat调用J2EE server的EJB来说,一定要把J2EE server上的j2ee.jar拷贝过去,有几M大。而如果用Weblogic的话,只需拷贝Wlclient.jar到Tomcat,他只有几百K.

>>不过robbin的话令我感到奇怪的是EJB规范是Sun制定的,而sun自己实现的EJB Server却不尽如人意...<<

这没有什么好奇怪的,关系数据库理论是IBM发明的,但最好的关系数据库是Oracle;图形用户界面是Apple率先采用的,但最广泛的OS是Windows;IBM是PC机的鼻祖,但PC机卖的最好的是Dell。

再说,BEA的创始人也是从Sun公司出来的,呵呵。

Sun自己的App Server是SunOne Application Server,就是原来的iPlanet,也是一个很有名气的App Server,在App Server市场仅次于Websphere,Weblogic,排名第3。但是iPlanet也是要花很多银子购买的,Sun才不舍得把iPlanet免费给你下载呢!Sun在J2EE下载包里面放进去的不是iPlanet,而是另一个很简陋的J2EE Impl,仅仅就是一个Demo而已,不能当真App Server的来玩的。