|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2009
Messaggi: 13
|
[Java] Problema RMI
Ragazzi ho un problema con RMI.
Ho creato l'interfaccia remota ControllerInterface: Codice:
import java.rmi.*;
public interface ControllerInterface extends Remote{
public void boot() throws RemoteException;
public boolean aggiungiAccount(Account account) throws RemoteException;
public boolean aggiungiTemplate(Template template) throws RemoteException;
public boolean areTemplate() throws RemoteException;
public Template trovaTp(String nome) throws RemoteException;
public boolean creaDocumento (String nome, String nomeTp, String proprietario) throws RemoteException;
public boolean invitaUtente(String nomeProprietario,String nomeDocumento, String invitato) throws RemoteException;
public Documento ricercaDocumento(String nome) throws RemoteException;
public Account ricercaUtente(String username) throws RemoteException;
public Account ricercaAmministratore(String username) throws RemoteException;
public boolean login(String nome, String psw) throws RemoteException;
public boolean bloccaSezione(String user, String sez, String doc) throws RemoteException;
public Sezione salvaSezione(String user, String sez, String doc) throws RemoteException;
}
che come vedete fa un po' di cose. poi ho implementato l'interfaccia con un oggetto Controller che non vi sto a incollare perchè molto lungo. Poi ho ovviamente creato il server con la seguente funzione: Codice:
public static void main(String args[])throws Exception{
Controller controller=new Controller();
Naming.rebind("ctrl",controller);
}
il problema ce l'ho nel client: Codice:
import java.rmi.*;
public class Client{
public static void main(String args[]) throws Exception{
Controller c= (Controller) Naming.lookup("ctrl");
}
}
Exception in thread "main" java.lang.ClassCastException: Controller_Stub cannot be cast to Controller at Client.main(Client.java:5) cosa sbaglio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Devi utilizzare l' interfaccia remota e non la classe concreta.
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Nov 2009
Messaggi: 13
|
Nel senso che dovrei fare:
Codice:
ControllerInterface c= (ControllerInterface) Naming.lookup("ctrl");
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
esatto, di norma però si utilizza un metodo factory per lavorare in modalità singleton.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:55.



















