Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Tecniche di Programmazione Concorrente e Distribuita, 9 CFU => Topic started by: rox on 24-12-2011, 14:50:53



Title: esercizio RMI
Post by: rox on 24-12-2011, 14:50:53
salve ragazzi ,
ho provato a fare un semplice esercizio sulle RMI . Se lo faccio sull'indirizzo locale,funziona tutto alla perfezione,appena faccio girare lato client e lato server su due macchine diverse,non funziona più niente,perchè?


Title: Re:esercizio RMI
Post by: XDnl on 24-12-2011, 15:35:53
Puoi verificare due cose:

  • Ho notato che bisogna includere il percorso dove ci sono i file .class nella variabile di ambiente CLASSPATH (non so perchè ma anche lanciando il programma con java -cp . NomeProgramma, che dovrebbe impostare il classpath nel percorso corrente, non funziona)
  • Nel server prima del programma vero e proprio lancia rmiregistry. Nel codice, quando fai il lookup di un oggetto volendo puoi usare anche l'indirizzo locale, ad esempio:
Code:
java.rmi.Naming.lookup("rmi://127.0.0.1/OGGETTO");
Nel client invece non c'è bisogno di lanciare rmiregistry (perchè si connetterà a quello remoto già lanciato), però qui non puoi utilizzare l'indirizzo locale, bensì devi fare riferimento al server remoto, ad esempio:
Code:
java.rmi.Naming.lookup("rmi://192.168.1.15/OGGETTO");

    In generale il programma (client o server che sia) deve sempre riferirsi all'indirizzo dove gira rmiregistry (che potrebbe risiedere su una terza macchina).
    Ho provato anche io un esercizio su due macchine diverse (Win XP) e con questi accorgimenti funziona.

     .ciaociao