A proxy provides the same interface as the remote objects. Though the (container generated) stub on the cilent side is a proxy for the remote object. The client communicates only with stub. "Behind the scenes" the stub establishes all network stuff (opening socket to remote server, marshalling parameters, ...). The stub which implements the remote interface is the proxy for the EJBObject, not the interface itself.