public void invoke(RemoteCall call) throws Exception {
  try {
    clientRefLog.log(Log.VERBOSE,"execute call");
    call.executeCall();
  }
 catch (  RemoteException e) {
    clientRefLog.log(Log.BRIEF,"exception: ",e);
    free(call,false);
    throw e;
  }
catch (  Error e) {
    clientRefLog.log(Log.BRIEF,"error: ",e);
    free(call,false);
    throw e;
  }
catch (  RuntimeException e) {
    clientRefLog.log(Log.BRIEF,"exception: ",e);
    free(call,false);
    throw e;
  }
catch (  Exception e) {
    clientRefLog.log(Log.BRIEF,"exception: ",e);
    free(call,true);
    throw e;
  }
}

public void invoke ( RemoteCall call ) throws Exception { try { clientRefLog . log ( Log . VERBOSE , "execute call" ) ; call . executeCall ( ) ; } catch ( RemoteException e ) { clientRefLog . log ( Log . BRIEF , "exception: " , e ) ; free ( call , false ) ; throw e ; } catch ( Error e ) { clientRefLog . log ( Log . BRIEF , "error: " , e ) ; free ( call , false ) ; throw e ; } catch ( RuntimeException e ) { clientRefLog . log ( Log . BRIEF , "exception: " , e ) ; free ( call , false ) ; throw e ; } catch ( Exception e ) { clientRefLog . log ( Log . BRIEF , "exception: " , e ) ; free ( call , true ) ; throw e ; } }
invoke makes the remote call present in the remotecall object . invoke will raise any " user " exceptions which should pass through and not be caught by the stub . if any exception is raised during the remote invocation , invoke should take care of cleaning up the connection before raising the " user " or remote exception .
