I am new at Java RMI technology. I have a problem that already other programmers had, but I was not able to understand what they did in the tutorials in order to solve it. I have implemented the game "tic tac toe" with Java RMI. Here the ControllerServer code
public ControllerServer() {
try {
game = new GameImpl();
BoardView view = new BoardView(this);
viewUpdater = new ServerViewUpdaterImpl(view);
Game gameStub = (Game) UnicastRemoteObject.exportObject(game, 1099);
ServerViewUpdater serverViewStub = (ServerViewUpdater) UnicastRemoteObject.exportObject(viewUpdater, 1099);
Registry registry = LocateRegistry.createRegistry(1099);
registry.rebind("TTTGame", gameStub);
registry.rebind("TTTServerView", serverViewStub);
} catch (Exception e) {
e.printStackTrace();
}
}
and here the ControllerClient
public ControllerClient() {
try {
BoardView view = new BoardView(this);
localView = new ClientViewUpdaterImpl(view);
String address = JOptionPane.showInputDialog("Insert server's address: ");
Registry registry = LocateRegistry.getRegistry(address, 1099);
game = (Game) registry.lookup("TTTGame");
remoteView = (ServerViewUpdater) registry.lookup("TTTServerView");
remoteView.registerClientView(localView);
} catch (Exception e) {
e.printStackTrace();
}
}
It works locally, by inserting "localhost" "127.0.0.1" or my external network IP. It does not work if client and server run on different machines.
I got the exception "connection refused by 127.0.1.1". I do not understand why they are trying to use a localhost address at some point of the execution.
LocateRegistry.getRegistry()
. If you supply the server's IP address, it will look up the server's Registry. If the exception says 'connection refused by 127.0.1.1', that is prima facie evidence you supplied 127.0.1.1 toLocateRegistry.getRegistry().
Or else you got it on the call not the lookup. – Depot