}catch(InvocationTargetException e){ throw (Exception)e.getTargetException();
public Object invoke(Remote obj, Method method, Object[] params, long opnum) throws Exception {    // Check if client and server are in the same VM, then local call can be used to    // replace remote call, but it's somewhat violating remote semantic.    Object svrobj = manager.serverobj;        // Make sure that the server object is compatible. It could be loaded from a different    // classloader --iP    if(svrobj != null && method.getDeclaringClass().isInstance(svrobj)){        //local call		Object ret = null;		try{		    ret = method.invoke(svrobj, params);		}catch(InvocationTargetException e){		    throw (Exception)e.getTargetException();		}		//System.out.println("\n\n ***** local call: " + method + "\nreturn: " + ret + "\n\n");		return ret;	}	//System.out.println("***************** remote call:" + manager.serverPort);	return (invokeCommon(obj, method, params, -1, opnum));}