你的理解有一些问题
首先一点,凡是回调方法客户是无法访问的,因为你根本没有bean类的引用,有的只是Home,Object接口的引用。只能调用接口暴露的方法。另外,调用顺序问题
激活时:ejbActivate(连接资源)->ejbLoad(读取bean主键,并查找bean)
挂起时:ejbStore(存储bean主键,消除引用)->ejbPassivate(释放资源)bean的remove操作将删除你的接口引用,bean的确是pooled状态,但使用它必须重新获得对Object接口的引用。

解决方案 »

  1.   

    我觉得你上面的看法基本上正确
    不过好像客户端一般不能直接调用passivate,调用bean=null只是为了垃圾回收,而且passivate和释放引用是由容器决定的,前者当bean没有方法被调用时随时可能发生,后者是当容器觉得pool中实例太多或某些异常时释放一些。
    remove时好像除了将记录从数据库中删除外,还解除了主键同远程接口对象的绑定,对象的身份没有了,因此不能调用。