2016-10-28 1 views
1

J'ai des problèmes pour connecter mon client RMI au serveur. J'ai donc ces classes/interfaces:Client Java RMI expérimenté ClassCastException

package application; 

    import java.sql.ResultSet; 

    public interface InterfaceRMI { 

     public void insererEtudiant(String requete); 
     public void supprimerEtudiant(String requete); 
     public ResultSet selectionnerEtudiant(String requete); 
    } 

classe Server:

package application; 

    import java.rmi.RemoteException; 
    import java.rmi.server.UnicastRemoteObject; 
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.ResultSet; 
    import java.sql.Statement; 

    public class ServeurMySQL extends UnicastRemoteObject implements InterfaceRMI { 

     public int port; 

     public ServeurMySQL(int port) throws RemoteException { 
      this.port = port; 
     } 


     @Override 
     public void insererEtudiant(String requete) { 
      // Implementation for insertion 
     } 

     @Override 
     public void supprimerEtudiant(String requete) { 
      // Implementation for delete 
     } 

     @Override 
     public ResultSet selectionnerEtudiant(String requete) { 
      // Implementation for selection 
     } 
    } 

classe de test de connexion:

package application; 

    import java.rmi.registry.LocateRegistry; 
    import java.rmi.registry.Registry; 

    public class test { 

     public static void main(String[] args) { 
      try {   
       Registry r = LocateRegistry.getRegistry(1098); 

       InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL")); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

Lorsque j'ai remplacé la ligne InterfaceRMI serveur = (InterfaceRMI) (r.lookup("serveurMySQL")); par r.lookup("serveurMySQL"); Je n'ai pas la Exception, j'ai compris que la connexion fonctionnait, et le problème était seulement le casting. Mais je ne sais pas comment le résoudre.

Le exeption est la suivante:

java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to application.InterfaceRMI 
at application.test.main(test.java:13) 

P.S: Le serveur RMI est lancé sans aucun problème.

+0

Montrez-nous l'exception – Antoniossss

+0

vous na pas montrer le code pour serveur rmi – Antoniossss

+1

Indice : essayez de lire quelques tutoriels à ce sujet. N'essayez pas ** d'apprendre votre chemin à partir de javadoc ou d'avoir * des idées * comment ces choses fonctionnent. Commencez simplement avec une configuration entièrement décrite qui est * connue * pour fonctionner. Et: ne mettez pas le code dans les commentaires. mettez à jour votre question à la place. Comme: http://stackoverflow.com/questions/3638024/how-to-learn-java-rmi-quickly – GhostCat

Répondre

3

Première:

public interface InterfaceRMI 

doit être

public interface InterfaceRMI extends Remote 

Deuxième:

chaque méthode dans votre InterfaceRMI doit déclarer throws RemoteException

+0

Je l'ai essayé en utilisant cette extension mais ensuite j'ai eu une autre exception en lançant le serveur lui-même, mais merci je vais essayez de lancer 'RemoteException' à partir des méthodes d'interface. –

+0

@KhalilHamani Quand on vous donne une réponse, il n'y a pas grand intérêt à essayer seulement les morceaux que vous aimez. Vous devez tout faire. – EJP