I'm confused about some of the concepts relating to CORBA and IIOP. 1) IIOP can pass objects by reference. Not sure how is that done. I know for a remote object in RMI/JRMP, the stub of the remote object is serialized and passed back to the client (ie. the client holds a reference to the remote object thru its stub). Is this done similarly in IIOP? 2) How can RMI work over IIOP (ie. RMI-IIOP) if IIOP doesn't allow pass by value? or is it that RMI only works with the most latest version of IIOP (which also supports pass by value)? 3) In ejb 2.0,all remote interfaces have to be RMI-IIOP compliant but the wire protocol can be anything. Also, the client has to assume that it will always obtain the IIOP stub and thus will always need to implement the narrow() method. Is this correct? Just need to get a clear picture on these concepts. Any help will be appreciated. Thanks.