Débutant RMI, problème "connection refused"
Bonjour,
Je suis un tuto sur RMI en développant sur linux.
Je crois que le code est correcte car je n'ai pas d'erreur de compil.
Le probleme doit se situer au niveau des differentes console et VM utilisee.
Pour memoire le code compiler avec javac -d . nom des class
et completer avec rmic -d . hello.HelloImpl
Je suis sous:
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.2) (suse-4.3.1-i386)
OpenJDK Client VM (build 20.0-b11, mixed mode)
Donc en principe je n'ai pas de HelloImpl_Skel.class
Juste ici dessous les class compilees:
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
L'interface Hello
package hello;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote{
void sayHello(String param) throws RemoteException;
} // Fin interface Hello
La class avec implementation
package hello;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
public class HelloImpl extends UnicastRemoteObject implements Hello{
public HelloImpl() throws RemoteException{ super(); }
public void sayHello(String param) throws RemoteException{
System.out.println("Hello" + param + "!");
}
} // Fin class HelloImpl
// L'application client
package hello;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.NotBoundException;
import java.net.MalformedURLException;
class HelloClient{
public static void main(String[] args){
try {
Hello helloObject = (Hello)Naming.lookup("//"+ args[0] + "/Hello");
helloObject.sayHello("vio");
}catch(RemoteException e){
System.out.println("HelloClient exception" + e.getMessage());
}catch(NotBoundException e){
System.out.println("HelloClient : objectNotBound" + e.getMessage());
}catch(MalformedURLException e){
System.out.println("HelloClient : URL malformee" + e.getMessage());
}
} // Fin main
} // Fin class HelloClient
// L'application serveur
package hello;
import java.rmi.Naming;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
class HelloServer{
public static void main(String [] args){
try{
HelloImpl helloObj = new HelloImpl();
Naming.rebind("Hello", helloObj );
} catch (RemoteException e){
System.out.println("HelloServer exception " + e.getMessage());
} catch (MalformedURLException e){
System.out.println("HelloServer : url malformee " +e.getMessage());}
} // Fin main()
} // Fin class HelloServer |
Comme dit plus haut a la compil j'ai eu un nouveau dossier nomme hello avec le contenu suivant:
Hello.class HelloClient.class HelloImpl.class HelloImpl_Stub.class HelloServer.class
Comme dit je travaille en console dans le dossier qui contient le dossier hello
Je lance le server de nom avec un num de port:
rmiregistry 1099
Dans une autre console je lance le server:
java hello.HelloServer
Les deux console sont en attente et aucun message d'erreur.
Je lance alors le client dans une troisieme console:
java hello.HelloClient m1:1099
Et maintenant je recois cette erreur.
HelloClient exceptionConnection refused to host: m1; nested exception is:
java.net.ConnectException: Connection refused
J'ai du mal a voir ce que je dois faire pour corriger cette histoire.
Est-ce que quelqu'un peut me dire que faire pour en sortir?
D'avance merci
marc_3
Débutant RMI, problème "connection refused"
sllt avant tous je ne suis pas un pro du mode console,mais je pense que si ta connection avec ton serveur á echoué c'est dus fais que ton client n'arrive pas á trouver le poste m1 afin de s'adresse á son gestionaire d'annulaire.moi je procéde comme suit:
Code:
1 2 3 4 5 6 7 8 9
| //registre du serveur
System.out.println("Lancement du registre");
Registry registre=LocateRegistry.createRegistry(port);
connect= new FrameImpl();
registre.rebind("connecter",connect);
//registre du client
Registry registre =LocateRegistry.getRegistry("localhost",port);
frame face=(frame)registre.lookup("connecter"); |
car mon client et mon serveur ici son local.
j'espere avoir pus d'aide.
a++ :)