我同意你的观点,由ejb是基于分布试的应用,所以它只能是传值方式;
但你可以在EJB中修改了传过来的对象并构造一个同样的新实例,然后再把这个对象返回去,在servlet 中得到的就是这个新构造的实例;
具体实现方法是你可以定义一个接口,里面包含你想要实现的方法,然后让这两个对象都实现该接口,这样在传值之前,你可以用方法付初值,而在ejb修改后,再传回时,你可以用同样的方法操作它,就好象它们是一个相同的对象;因为它们都实现了同样的接口;

解决方案 »

  1.   

    你的这个方法当然是可行的,而且其实我也这样做的,我想问的是有关这个的规范如何,或者说对于两个不同的版本的EJB服务器的那种特性而言,哪种才是正常的情况,以我的理解来看,由于是分布式的系统,客户端向EJB发送请求并传递对象给它,那么应该是传值的,因为不同的JVM之间很难或者不可能实现传地址(而在我上面说的那种情况下实际上EJB服务器和servlet/jsp服务器在jboss2.2_tomcat3.2下可能使用的同一JVM,而在2.4版本下则不是),因此传值应该是规范要求的方式。我记得什么书上好像提到过这一点,但是忘记了是什么书了。
    有没有人记得在类似servlet调用EJB(servlet和EJB可能不在同一个服务器上或者不同的JVM上)这种应用时的对象传递的标准方式能否为传址。