package me.test.spring.rmi.pojo; import java.util.ArrayList; import java.util.List; public class ServerInterfaceImpl implements ServerInterface { private List<String> serverData = null; private Runnable serverCallback = null; public ServerInterfaceImpl() { serverData = new ArrayList<String>(); serverData.add("S1"); serverData.add("S2"); ServerCallback callback = new ServerCallback(); callback.setData(serverData); // serverCallback = callback; serverCallback = RMIUtil.registerAndExport(callback, Runnable.class); System.gc(); // Try GC, then start client after a few seconds. } public void execute(List<String> clientData, Runnable callback) { System.out.println("SERVER: ====================START execute()."); System.out.println("SERVER: client data received is : " + clientData); clientData.add("S9"); System.out.println("SERVER: client data has been changed to : " + clientData); System.out.println("SERVER: call client callback."); callback.run(); System.out.println("SERVER: ====================END execute()."); System.out.println(); } public List<String> getData() { return serverData; } public Runnable getServerCallback() { System.out.println("~~~~~~~~~"); return serverCallback; } }