testBeanHome.java  远程主接口
testLocalHome.java 本地主接口test.java        主接口
testLocal.java   本地接口testBean.java   你的BEAN (主要业务逻辑全在这儿了)正常只有远程接口就可以工作 ,但当BEAN的调用和服务器都在本地执行时,如果你定义了本地接口的话它们就会起作用个人理解必须先使用ctx.lookup()来获得一个对象,然后再通过PortableRemoteObject.narrow()将这个对象转换成主接口对象,这时才可以利用转换后的主接口对象的create方法生成远程接口实例开始调用 业务逻辑

解决方案 »

  1.   

    但是有直接用home=ctx.lookup();home.create();好像也可以哦
      

  2.   

    楼上说的没错!在调用bean时有用ctx.lookup()方法是因为寻找的是本地对象,没有经过网络传输,所以不需要经过 PortableRemoteObject.narrow() 来对对象进行重构!ctx.lookup()是一定要用的啊!
    另外,当 client 和 server  不在同一台机器时,client 还必须要有一个 stub 文件!
    否则,PortableRemoteObject.narrow() 会失败的!
      

  3.   

    能不能说清楚点啊,stub文件是什么咚咚啊,还有就是EJB不都是用的bs结构吗??怎么会不通过网络传输??还有就是调用ejb的都是servlet或者另一ejb,一般他们不都是在一步服务器上?很少分布在几个不同的服务器把??