Problème RMI, création _Skel.class
Bonsoir à tous,
Je me suis lancé dans la réalisation d'un chat, j'ai donc crée deux interfaces
ChatUser.java (client) et ChatRoom.java (serveur), ChatRoom étant implémentée par ChatRoomImpl, tout compile merveilleusement bien :)... mais ensuite quand j'utilise Il me crée bien ChatRoomImpl_Stub.class mais pas de _Skel...
Mes codes ont l'air correct...qu'est ce que j'ai mal fait ou pas fait ? avez vous une idée s'il vous plait? merci d'avance de votre aide... C'est vraiment très important pour moi.
Code de ChatUser.java
Code:
1 2 3 4 5 6 7
| import java.rmi.*;
public interface ChatUser extends Remote{
/*Méthode permettant d'afficher les messages publiés sur la salle de discussion
dans les fenetres de tout les objets distants que sont les utilisateurs*/
public void displayMessage(String message) throws RemoteException;
} |
Code de ChatRoom.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| import java.rmi.*;
public interface ChatRoom extends Remote{
//Méthode permettant l'élaboration de la connexion à la salle de discussion
public void subscribe(ChatUser user, String pseudo)throws RemoteException;
//Méthode permettant la deconnexion de la salle de discussion
public void unsubscribe(String pseudo)throws RemoteException;
//Méthode permettant la publication de messages dans la salle de discussion
public void postMessage(String pseudo, String message)throws RemoteException;
} |
Code de ChatRoomImpl.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.util.*;
import java.io.*;
public class ChatRoomImpl extends UnicastRemoteObject implements ChatRoom{
//Gestion du serialVersionUID de la classe serialisable
private static final long serialVersionUID = 1L;
//Création de la Hashtable
private Hashtable<String,ChatUser> users = new Hashtable<String,ChatUser>();
/*Spécification du constructeur de la classe qui peut levé une
exception en utilisant celui de la classe dont il hérite*/
public ChatRoomImpl() throws RemoteException{
super();
}
//Méthode permettant l'élaboration de la connexion à la salle de discussion
public void subscribe(ChatUser user, String pseudo)throws RemoteException{
String message="Connexion de "+pseudo;
System.out.println(message);
this.postMessage("ChatRoom",message);
/*Insertion du nouvel utilisateur dans la hashtable de la salle de discussion,
avec son pseudo et sa référence*/
this.users.put(pseudo,user);
}
//Méthode permettant la deconnexion de la salle de discussion
public void unsubscribe(String pseudo)throws RemoteException{
String message="Déconnexion de "+pseudo;
//Suppression de l'utilisateur de la table de référence de la salle de discussion
this.users.remove(pseudo);
System.out.print(message);
this.postMessage("ChatRoom",message);
}
//Méthode permettant la publication de messages dans la salle de discussion
public void postMessage(String pseudo, String message)throws RemoteException{
String fullMessage= pseudo+" dit : "+message;
System.out.print(fullMessage);
/*Utilisation de l'enumeration qui permet de parcourir toute la Hashtable*/
Enumeration enu= users.elements();
while(enu.hasMoreElements()){
ChatUser user=(ChatUser)enu.nextElement();
user.displayMessage(fullMessage);
}
}
} |