[Java][RMI] Connection refused to host

Connection refused to host [Java][RMI] - Java - Programmation

Marsh Posté le 24-02-2003 à 23:56:20    


Bonjour a tous,  
 
J'ai fait un prog RMI super simple, juste une fonction pour afficher HelloWorld.  
 
Mais j'ai quelques pb.  
 
Lorsque je met tous les fichiers dans le même répertoire et que je lance le serveur, le client marche nickel.  
 
Mais lorsque je veux y accéder via le net (ou dans des répertoires séparés), il me sort se message d'erreur :  
Connection refused to host: 192.168.0.1; nested exception is:  
java.net.ConnectException: Connection refused: connect  
Message en entier:  
Code:  

Code :
  1. Connection refused to host: 192.168.0.1; nested exception is:
  2.         java.net.ConnectException: Connection refused: connect
  3. java.rmi.ConnectException: Connection refused to host: 192.168.0.1; nested excep
  4. tion is:
  5.         java.net.ConnectException: Connection refused: connect
  6.         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
  7.         at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185
  8. )
  9.         at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
  10.         at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:101)
  11.         at HelloworldImpl_Stub.showHello(Unknown Source)
  12.         at HelloClient.<init>(HelloClient.java:21)
  13.         at HelloClient.main(HelloClient.java:42)
  14. Caused by: java.net.ConnectException: Connection refused: connect
  15.         at java.net.PlainSocketImpl.socketConnect(Native Method)
  16.         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:295)
  17.         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:161)
  18.         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:148)
  19.         at java.net.Socket.connect(Socket.java:425)
  20.         at java.net.Socket.connect(Socket.java:375)
  21.         at java.net.Socket.<init>(Socket.java:290)
  22.         at java.net.Socket.<init>(Socket.java:118)
  23.         at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect
  24. SocketFactory.java:22)
  25.         at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster
  26. SocketFactory.java:122)
  27.         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
  28.         ... 6 more


 
 
Et je ne vois pas d'ou cela vient.  
Je precise que je n'ai pas de firewall ou autre qui pourrait bloquer la connexion et quand je fais ca :  

Code :
  1. Registry rep = (Registry)LocateRegistry.getRegistry("ziade.no-ip.com" );
  2. _serveur = (Helloworld)rep.lookup("HELLO_WORLD" );


Ca fonctionne très bien.  
Mais ca plante qd j'appelle la methode distante a ce niveau :  

Code :
  1. System.out.println(_serveur.showHello());


(j'utilise le jdk 1.4.0 sous win Xp)  
 
Merci bcp  
David  

Reply

Marsh Posté le 24-02-2003 à 23:56:20   

Reply

Marsh Posté le 25-02-2003 à 00:18:54    

Salut David,
 
Ton problème vient du fait que tu fais un lookup sur le hostname. Il faut que tu lances ton server RMI en lui passant le hostname explicitement.
 

Citation :


java -Djava.rmi.server.hostname=ziade.no-ip.com TonServerRMI


 
Une solution plus rapide, tu remplaces le nom de ta machine par son IP et ca fonctionenra immédiatement.
 

Citation :


Registry rep = (Registry)LocateRegistry.getRegistry("192.168.0.1" );  


 
Si tu es sous XP, vérifie que ton firewall n'est pas activé. Si tu veux une solution pour passer à travers un firewall via des ports prédéfinis, demande j'ai aussi la solution
 
A+
 
PS : a noter que je ne procède pas ainsi pour accéder un serveur distant. Plutot j'utilise un URL rmi du genre rmi://192.168.0.1/HELLO_WORLD


Message édité par darklord le 25-02-2003 à 00:22:35

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 26-02-2003 à 17:50:39    

J'ai fait comme tu dis, mais tjs le même pb :-( par contre, le client est également contacté sur le port 1099 pour les echanges ? j'ai testé avec un pote qui a un firewall, mais le serveur n'en a pas.
 
Encore merci
David

Reply

Marsh Posté le 26-02-2003 à 17:57:09    

montre ton code ou mp si tu veux pas qu'il soit public


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 28-02-2003 à 22:21:56    

desch3 a écrit :


Bonjour a tous,  
 
J'ai fait un prog RMI super simple, juste une fonction pour afficher HelloWorld.  
 
Mais j'ai quelques pb.  
 
Lorsque je met tous les fichiers dans le même répertoire et que je lance le serveur, le client marche nickel.  
 
Mais lorsque je veux y accéder via le net (ou dans des répertoires séparés), il me sort se message d'erreur :  
Connection refused to host: 192.168.0.1; nested exception is:  
java.net.ConnectException: Connection refused: connect  
Message en entier:  
Code:  

Code :
  1. Connection refused to host: 192.168.0.1; nested exception is:
  2.         java.net.ConnectException: Connection refused: connect
  3. java.rmi.ConnectException: Connection refused to host: 192.168.0.1; nested excep
  4. tion is:
  5.         java.net.ConnectException: Connection refused: connect
  6.         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
  7.         at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185
  8. )
  9.         at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
  10.         at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:101)
  11.         at HelloworldImpl_Stub.showHello(Unknown Source)
  12.         at HelloClient.<init>(HelloClient.java:21)
  13.         at HelloClient.main(HelloClient.java:42)
  14. Caused by: java.net.ConnectException: Connection refused: connect
  15.         at java.net.PlainSocketImpl.socketConnect(Native Method)
  16.         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:295)
  17.         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:161)
  18.         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:148)
  19.         at java.net.Socket.connect(Socket.java:425)
  20.         at java.net.Socket.connect(Socket.java:375)
  21.         at java.net.Socket.<init>(Socket.java:290)
  22.         at java.net.Socket.<init>(Socket.java:118)
  23.         at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect
  24. SocketFactory.java:22)
  25.         at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster
  26. SocketFactory.java:122)
  27.         at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
  28.         ... 6 more


 
 
Et je ne vois pas d'ou cela vient.  
Je precise que je n'ai pas de firewall ou autre qui pourrait bloquer la connexion et quand je fais ca :  

Code :
  1. Registry rep = (Registry)LocateRegistry.getRegistry("ziade.no-ip.com" );
  2. _serveur = (Helloworld)rep.lookup("HELLO_WORLD" );


Ca fonctionne très bien.  
Mais ca plante qd j'appelle la methode distante a ce niveau :  

Code :
  1. System.out.println(_serveur.showHello());


(j'utilise le jdk 1.4.0 sous win Xp)  
 
Merci bcp  
David  
 


 
tu peux montrer comment tu fais pour lancer le serveur... J'aurais plutôt penché pour un policy file contenant un truc du genre
 
permission java.net.SocketPermission "<client host>:<ports>" "accept,connect"
 
ou un truc du genre  

Reply

Marsh Posté le 28-02-2003 à 22:33:30    

J'ai décidé de tout reprendre a 0.
 
J'ai refait un serveur suivant pas a pas les instruction d'un bouquin, et maintenant j'ai un pb lorsque je lance mon serveur :

Code :
  1. java.security.AccessControlException : Acces Denied


 
Ca doit venir de mon .policy pourtant :

Code :
  1. grant
  2. {
  3.     permission java.security.AllPermission "", "accept, connect";
  4.     permission java.net.SocketPermission "*:1024-65535", "accept, connect, listen, resolve";   
  5.     permission java.net.SocketPermission "*:80","connect";
  6.    
  7. };


 
et je lance comme cela :

Code :
  1. D:\Synthese2>java -Djava.rmi.server.codebase=file:/d:\Synthese2\rmi -Djava.rmi.server.hostname=localhost rmi.Reverse -Djava.security.policy=policy.all


 
pfff.
 
Merci
David

Reply

Marsh Posté le 28-02-2003 à 22:41:25    

ton problème est intéressant ...
Tu ne peux pas ajouter des bouts de code?

Reply

Marsh Posté le 28-02-2003 à 22:46:47    

si si, voila la structure des fichiers sur mon dur :
 
d:\Synthese2\Reverse.java
d:\Synthese2\ReverseInterface.java
 
le code de ReverseInterface :

Code :
  1. package rmi;
  2. import java.rmi.Remote;
  3. import java.rmi.RemoteException;
  4. public interface ReverseInterface extends Remote {
  5. String reverseString(String originalString) throws RemoteException;
  6. }


 
Le code de Reverse.java :

Code :
  1. package rmi;
  2. import java.rmi.*;
  3. import java.rmi.server.*;
  4. public class Reverse extends UnicastRemoteObject implements ReverseInterface {
  5. public Reverse() throws RemoteException {
  6.  super();
  7. }
  8. public String reverseString (String originalString) throws RemoteException {
  9.  return "coucou c le serveur";
  10. }
  11. public static void main(String[] args) {
  12.  if (System.getSecurityManager() == null) {
  13.   System.setSecurityManager(new RMISecurityManager());
  14.  }
  15.  String name = "//localhost/rmi.Reverse";
  16.  try {
  17.   Reverse r = new Reverse();
  18.   Naming.rebind(name,r);
  19.   System.out.println("Objet lié" );
  20.  }
  21.  catch(Exception e) {
  22.   System.out.println("Erreur de liaison de l'objet" );
  23.   System.out.println(e.toString());
  24.  }
  25. }
  26. }


 
Je compil :
donc je me retrouve avec :
d:\Synthese2\rmi\Reverse.class
d:\Synthese2\rmi\ReverseInterface.class
 
Un rmic pour avoir le skel et le stub
 
Je lance la registry depuis une autre fenetre dos
 
Et je lance mon serveur et j'ai l'erreur decrite plus haut.
 
Merci de me filer un coup de main, je galere.
 
Ca pourrait venir de mon windows ? j'ai pas de firewall, mm celui integré a xp est désactive. La version de java ??
 

Reply

Marsh Posté le 28-02-2003 à 23:47:17    

Citation :


String name = "rmi://localhost/Reverse


 
essaie avec ca

Reply

Marsh Posté le 28-02-2003 à 23:50:43    

Toujours la même erreur
:-(

Reply

Marsh Posté le 28-02-2003 à 23:50:43   

Reply

Marsh Posté le 01-03-2003 à 00:23:52    

bon en virant le securitymanager ça fonctionne au moins? :o

Reply

Marsh Posté le 01-03-2003 à 00:46:47    

euh  
 
 

Citation :

d:\Synthese2\Reverse.java

 
 

Citation :

package rmi

 
 
y'a un truc qui cloche non? [:gratgrat]
 
edit: euh ouais bon j'ai rien, les class sont au bon endroit :o


Message édité par the real moins moins le 01-03-2003 à 00:47:30

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 01-03-2003 à 13:28:58    

Bon, j'ai desintallé java puis reinstallé au cas ou, mais toujours la même chose.
 
Quand j'enleve le security manager, j'ai une autre exception :

Code :
  1. java.rmi.UnmarshalException


 
Ca commence a me saouler grave la.
 
Tu aurais pas un ptit prog super simple qui fonctionne chez toi que je puisse tester si ca vient de mon pc.
 
Ou sinon tester celui la pour voir.
 
Encore merci

Reply

Marsh Posté le 01-03-2003 à 15:06:05    

desch3 a écrit :

Bon, j'ai desintallé java puis reinstallé au cas ou, mais toujours la même chose.
 
Quand j'enleve le security manager, j'ai une autre exception :

Code :
  1. java.rmi.UnmarshalException


 
Ca commence a me saouler grave la.
 
Tu aurais pas un ptit prog super simple qui fonctionne chez toi que je puisse tester si ca vient de mon pc.
 
Ou sinon tester celui la pour voir.
 
Encore merci


 
Un petit TP qu'on a eu :
http://beru.univ-brest.fr/~singhof [...] MI/tp.html
il marche.

Reply

Marsh Posté le 01-03-2003 à 16:36:56    

j'ai des vagues souvenir de RMI ...
le coup du unmarshal, c'est pas un problème avec les squeletons ???

Reply

Marsh Posté le 01-03-2003 à 17:01:06    

Je ne sais pas si c a cause des sueletons, mais ils sont bien présent.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed