Soy nuevo en tecnología Java RMI. Tengo un problema que ya tenían otros programadores, pero no pude entender lo que hicieron en los tutoriales para resolverlo. Implementé el juego "tic tac toe" con Java RMI. Aquí el código ControllerServerconexión rechazada en 127.0.1.1 java RMI
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();
}
}
y aquí el 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();
}
}
Funciona a nivel local, mediante la inserción de "localhost" "127.0.0.1" o mi red externa IP. No funciona si el cliente y el servidor se ejecutan en máquinas diferentes.
Obtuve la excepción "conexión rechazada por 127.0.1.1". No entiendo por qué están tratando de usar una dirección de host local en algún punto de la ejecución.
¿Obtiene la excepción en la búsqueda o al ejecutar su método remoto? – EJP
en la búsqueda. Prácticamente, obtiene el registro en el host local, en lugar del registro accesible en la dirección del servidor. Luego la búsqueda se ejecuta. Como encuentra cualquier registro en el servidor local (¡por supuesto, el registro está en el servidor!) Va en una excepción. – user1384636
Hay algo mal aquí. Solo buscará un registro en el host local si proporciona la dirección IP del host local a 'LocateRegistry.getRegistry()'. Si proporciona la dirección IP del servidor, buscará el Registro del servidor. Si la excepción dice 'conexión rechazada por 127.0.1.1', eso es * prima facie * evidencia que suministró 127.0.1.1 a 'LocateRegistry.getRegistry().' O bien la recibió en la llamada no en la búsqueda. – EJP