public RMIMessageInvoke invokeMethod(Object callee) throws MyRemoteException {
		Method method = null;
		try {
			System.out.println("The remote method name is: " + methodName);
			method = callee.getClass().getMethod(methodName, argsTypes);
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}

		try {
			this.returnValue = method.invoke(callee, this.args);
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			// e.printStackTrace();
//			this.exceptionThrown = true;
//			this.exception = new MyRemoteException("InvocationTargetException");
//			return null;
			throw new MyRemoteException(e.getTargetException().getMessage());
		}
		
		RMIMessageInvoke reply = new RMIMessageInvoke(this.returnValue);

		return reply;
	}