Domanda

Sto cercando di costruire l'applicazione RMI-IIOP (chat molto semplice). Ho bisogno che il server sia in grado di comunicare con il client, quindi il mio pensiero era quello di creare interfaccia dell'utente connesso:

public interface UserInterface extends Remote { 
    public void receiveMessage(String message) throws RemoteException;
}

Quindi sul lato client creare la classe utente con metodi server può eseguire ("ricevemessage"):

public class User extends PortableRemoteObject implements UserInterface {

    protected User() throws RemoteException {
        super();
    }

    @Override
    public void receiveMessage(String message) throws RemoteException {
        client.addMessageToGUI();
    }
}

Io uso rmic -iiop Chat User che genera _Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.class

Dopo aver posizionato tutti i file sul lato del server e sul lato client ed eseguendo l'applicazione, ottengo i seguenti errori:java.rmi.StubNotFoundException: Stub class not found: User_Stub; nested exception is:

Immagino che la differenza qui sia che la classe di chat sia creata sul server e quindi il client la utilizza usando l'interfaccia (che funziona bene), ma la classe utente deve essere creata sul lato client, quindi il client funziona in parte come server.

La mia domanda è simile a Java RMI - Rendere il client un serverMa per l'implementazione di RMI-IOOP.

Quindi in Words - Come posso inviare riferimento a oggetti locali al server in modo da poter eseguire operazioni su di esso?

Grazie! Leonty

È stato utile?

Soluzione 2

Quello che mi mancava è la classe "tie" sul lato client (_user_tie.class). Di solito non è necessario, ma nel caso in cui l'oggetto viene creato sul lato client, avevo bisogno anche di fornirlo.

Spero che risparmia un po 'di tempo per qualcun altro in futuro :)

Altri suggerimenti

si crea un'interfaccia server come:

public interface ChatServer extends Remote {
  public void registerUser(UserInterface user) throws RemoteException;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top