public Remote exportObject(Remote impl,Object data,boolean permanent) throws RemoteException {
  Class<?> implClass=impl.getClass();
  Remote stub;
  try {
    stub=Util.createProxy(implClass,getClientRef(),forceStubUse);
  }
 catch (  IllegalArgumentException e) {
    throw new ExportException("remote object implements illegal remote interface",e);
  }
  if (stub instanceof RemoteStub) {
    setSkeleton(impl);
  }
  Target target=new Target(impl,this,stub,ref.getObjID(),permanent);
  ref.exportObject(target);
  hashToMethod_Map=hashToMethod_Maps.get(implClass);
  return stub;
}

public Remote exportObject ( Remote impl , Object data , boolean permanent ) throws RemoteException { Class < ? > implClass = impl . getClass ( ) ; Remote stub ; try { stub = Util . createProxy ( implClass , getClientRef ( ) , forceStubUse ) ; } catch ( IllegalArgumentException e ) { throw new ExportException ( "remote object implements illegal remote interface" , e ) ; } if ( stub instanceof RemoteStub ) { setSkeleton ( impl ) ; } Target target = new Target ( impl , this , stub , ref . getObjID ( ) , permanent ) ; ref . exportObject ( target ) ; hashToMethod_Map = hashToMethod_Maps . get ( implClass ) ; return stub ; }
export this object , create the skeleton and stubs for this dispatcher . create a stub based on the type of the impl , initialize it with the appropriate remote reference . create the target defined by the impl , dispatcher ( this ) and stub . export that target via the ref .
