package me.test.spring.rmi.modify;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
public class ServerInterfaceImpl implements ServerInterface {
private List<String> serverData = null;
private Callback serverCallback = null;
public ServerInterfaceImpl() {
serverData = new ArrayList<String>();
serverData.add("S1");
serverData.add("S2");
ServerCallback callback = new ServerCallback();
callback.setData(serverData);
try {
serverCallback = (Callback) UnicastRemoteObject.exportObject(
callback, 0);
System.out.println(serverCallback);
} catch (RemoteException e) {
throw new RuntimeException(e);
}
}
// TODO: to add security manager to avoid 3rd party risk code.
public void execute(List<String> clientData, Callback 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.");
try {
callback.run();
} catch (RemoteException e) {
throw new RuntimeException(e);
}
System.out.println("SERVER: ====================END execute().");
System.out.println();
}
public List<String> getData() {
return serverData;
}
public Callback getServerCallback() {
System.out.println("~~~~~~~~~");
return serverCallback;
}
}