你的Collection EntityBean::finder(); 返回的Collection中的Bean对象是不是本地的?如果是的话,
//Client 
sessionBean.find(); 
当然会错拉,因为客户端操作了服务器的本地接口。
我是猜的,如果不是这个原因我就不知道拉。

解决方案 »

  1.   

    这里有两种情况,一种是SessionBean调用EntityBean,另一种是Client调用SessionBean.
    第一种情况:EJB规范规定EntityBean的find方法必须返回Collection类型,即使Collection没有实现可序列化(implements java.io.Serializable)也不要紧,因为规范承认这种方式。
    第二种情况:也是因为返回Collection而没有实现序列化,因此不能被远程客户调用,规范是不允许的。
      

  2.   

    但是Vector是序列化的啊。而Vector在一个构造方法Vector(Collection c);
    且有一个addAll(Collection c)方法(是从Collection的addAll(Collection)的实现)
    我刚学,为什么不能用第二种方法呢?
    请指教。
      

  3.   

    再请教:
    你们通常如何将Local的Object接口在SessionEJB中转换成Remote的Object接口返回客户端或其它代理?
    有什么好的方法没有?
    由于我刚刚学J2EE,请大家多多关照不胜感激。
      

  4.   

    对上面的两个问题
    1、报什么错,是否没有将获得的远程EntityBean接口javax.rmi.PortableRemoteObject.narrow()一下,这是必须的;
    2、一般是将EntityBean的方法用SessionBean包装一下,Client端调用SessionBean的方法,而不是直接调用EntityBean.
      

  5.   

    楼上,
    如何包装一个Collection呢?
    再次感谢。