import java.net.InetAddress; import java.rmi.RemoteException; import java.util.HashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.ReentrantLock; import javax.rmi.PortableRemoteObject; public class HelloImpl extends PortableRemoteObject implements HelloInterface { public HelloImpl() throws java.rmi.RemoteException { super(); // invoke rmi linking and remote object initialization } public String sayHello(String from) throws java.rmi.RemoteException { System.out.println("Hello from " + from + "!!"); System.out.flush(); String reply = "Hello from us to you " + from; return reply; } @Override public String sayHelloToTest(Test test) throws RemoteException { return "Test says Hello"; } @Override public String sayHelloWithInetAddress(InetAddress ipAddr) throws RemoteException { String response = "Hello with InetAddress " + ipAddr.toString(); return response; } @Override public String sayHelloWithHashMap(ConcurrentHashMap<String, String> receivedHashMap) throws RemoteException { int hashMapSize = 0; hashMapSize = receivedHashMap.size(); String response = "Hello with hashMapSize == " + hashMapSize; return response; } @Override public String sayHelloWithHashMap2(HashMap<String, String> receivedHashMap) throws RemoteException { int hashMapSize = 0; hashMapSize = receivedHashMap.size(); String response = "Hello with hashMapSize == " + hashMapSize; return response; } @Override public String sayHelloWithReentrantLock(ReentrantLock receivedLock) throws RemoteException { String response = "Hello with lock == " + receivedLock.isLocked(); return response; } }