Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75

    [JAVA] Comunicacazione RMI Client-Server

    Piccolo quesito...
    Come faccio a sapere nel Client a quale indirizzo connettermi col metodo lookup? Dovrei registrarel'indirizzo del server con un mome qualunque da richiamare poi nel client, giusto? Qualcuno mi aiuti a fare questo o cio che va fatto e ad impostare correttamente la stringa da passare al lookup che se non sbaglio dovrebbe contenere anche la porta dell'applicazione. Ciao

    Queste le due classi tralasciando le eccezioni...

    public class Server {
    public Server() {
    ArchivioBancoPosta A= new ArchivioBancoPosta();
    Naming.rebind("ArchivioRemoto", A);
    }
    }

    public class Client {
    public Client() {
    ArchivioBancoPosta A=(ArchivioBancoPosta)Naming.lookup(***Url del Server***);
    }
    //
    //Codice per utilizzare l'oggetto del server
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    Proprio nessuno che lo sappia?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    .

  4. #4
    Ammettendo che hai creato l'interfaccia remota che estende Remote, l'hai implementata estendendo UnicastRemoteObject, la rebind funziona così:
    Naming.rebind("//"+hostname+"/nomeinterfaccia",istanzainterfaccia);

    La porta di default è 1099, lascia quella e assicurati che non tieni firewall che la bloccano (in locale dovrebbe funzionare sempre).

    Non dimenticare di avviare il registro remoto prima di avviare il programma:
    start rmiregistry

    Per il client:
    Naming.lookup("//"+hostname+"/nomeinterfaccia");

    Se devi provare tutto in locale fai hostname="localhost" prima di naming e rebind.


    CIAUZZZZZZZ

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    Fatto cosi:

    public class Server {
    public static void main(String[] args) {
    try {
    System.out.println("Inizio");
    ArchivioBancoPosta A= new ArchivioBancoPosta();
    System.out.println("Ok1");
    Naming.bind("//localhost/ArchivioRemoto",A);
    System.out.println("Ok2");
    }
    catch (RemoteException rexc) {
    System.out.println("EccRemota");
    System.out.println(rexc.toString());
    return;
    }
    catch (MalformedURLException muexc) {
    System.out.println("EccMalformed");
    return;
    }
    catch (AlreadyBoundException muexc) {
    System.out.println("EccAlreadyBound");
    return;
    }
    }
    }
    Ma all'esecuzione mi da una eccezione remota per la riga
    Naming.rebind("//localhost/ArchivioRemoto",A);

    Dove sbaglio?
    Ho pure disattivato il firewall ed avviato mriregistry ma niente. Aiuto

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    Ci metto l'output del programma:

    Inizio
    Ok1
    EccRemota
    java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused: connect

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    Credo ora la connessione riesca, forse il problema era del mriregistry, ma avrei un problema collegato allo stub perchè il nuovo output è:

    Inizio
    Ok1
    EccRemota
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: cbbp.ArchivioBancoPosta_Stub

    Opinioni?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    Scusate il monologo, per dire che ho gia creato lo stub ed ho messo il file class sia nella cartella cbbp (package cbbp) ma per sicurezza anche in quella superiore...ma niente!!!


  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    75
    .

  10. #10
    Mi sa che devi studiare un poco meglio la questione
    http://java.sun.com/docs/books/tutorial/rmi/

    La questione dello stub forse si può risolvere facendo attenzione a quando viene generato:
    rmic miopackage.miaImplementazione
    cioè devi specificare il nome del package e se non ricordo male quando compili ti devi mettere nella folder precedente a miopackage e lanciare la riga di comando.

    Cmq se usi JBuilder X, anche la versione free, te li genera lui e sono sicuramente funzionanti...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.