How to pass object in arguments in RMI method?
===

I am trying to add arguments in RMI method. When I add e.g. `String` everything works fine. But I am not sure if I can pass an object I created. I am new to RMI so my code is very simple:

HelloIF

    public interface HelloIF extends Remote {
        String greeting(Context c) throws RemoteException;
    }

Hello

    public class Hello extends UnicastRemoteObject implements HelloIF {
    
    	public Hello() throws RemoteException {
    	}
    
    	public String greeting(Context c) throws RemoteException {
    		addToContext(c);
    		report(c);
    		return "greeting";
    	}
    
    	void addToContext(Context c) {
    		c.addID(Thread.currentThread().getId());
    	}
    
    	void report(Context c) {
    		System.out.println("Hello.greeting() thread : "
    				+ Thread.currentThread().getName() + " "
    				+ Thread.currentThread().getId());
    
    		System.out.println("Hello.greeting() context : "
    				+ c.getDistributedThreadName() + " " + c.getRequestType());
    	}
    }

RMIServer

    public class RMIServer {
    	 
        public static void main(String[] args) throws RemoteException, MalformedURLException {
            LocateRegistry.createRegistry(1099);
            HelloIF hello = new Hello();
            Naming.rebind("server.Hello", hello);
            System.out.println("server.RMI Server is ready.");
        	System.out.println("RMIServer.main() thread : " + Thread.currentThread().getName() 
        			+ " " + Thread.currentThread().getId());
        }
    }

RMIClient

    public class RMIClient {
        public static void main(String[] args) throws RemoteException, MalformedURLException, NotBoundException {
        	
        	Context context = new Context("request1", Thread.currentThread().getName()+System.currentTimeMillis());
        	
            Registry registry = LocateRegistry.getRegistry("localhost");
            HelloIF hello = (HelloIF) registry.lookup("server.Hello");
            System.out.println(hello.greeting(context));
        	System.out.println("RMIClient.mian() thread : " + Thread.currentThread().getName() 
        			+ " " + Thread.currentThread().getId());
        }
    }

and finally my class Context

    public class Context 
    {
    	private String requestType;
    	private String distributedThreadName;
    	private List<Long> IDList;

       (...) getters/setters
    }

What should I do make passing Context possible? 