J’ai utilisé RMI dans mon code:
import java.rmi.*; public interface AddServerIntf extends Remote { double add(double d1,double d2) throws RemoteException; }
import java.rmi.*; import java.rmi.server.*; public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf { public AddServerImpl() throws RemoteException { } public double add(double d1,double d2) throws RemoteException { return d1+d2; } }
import java.net.*; import java.rmi.*; public class AddServer { public static void main(Ssortingng args[]) { try { AddServerImpl addServerImpl=new AddServerImpl(); Naming.rebind("AddServer",addServerImpl); } catch(Exception exc) { System.out.println(exc); } } }
import java.rmi.*; public class AddClient { public static void main(Ssortingng args[]) { try { Ssortingng Url="rmi://"+args[0]+"/AddServer"; AddServerIntf addServerIntf=(AddServerIntf)Naming.lookup(Url); System.out.println("The first number is "+args[1]); double d1=Double.valueOf(args[1]).doubleValue(); System.out.println("The second number is: "+args[2]); double d2=Double.valueOf(args[2]).doubleValue(); System.out.println("The Sum is: "+addServerIntf.add(d1,d2)); } catch(Exception exc) { System.out.println(exc); } } }
Ce sont 4 fichiers .java écrits.
Ensuite, je comstack tous ces rmic AddServerImpl
. rmic AddServerImpl
je crée un stub
aide de rmic AddServerImpl
. Après cela, je lance le registre rmi côté serveur en utilisant start rmiregistry
. Ensuite, je démarre le serveur avec java AddServer
et enfin le client avec java AddClient 27.60.200.80 5 9
. Mais rien ne se passe
java.net.ConnectException : connection timed out : connect
est une exception levée côté client java.net.ConnectException : connection timed out : connect
Quelle est la raison et comment puis-je résoudre ce problème?
Sur la machine cliente, ce sont les fichiers .class suivants AddClient.class AddServerImpl.class AddServerImpl_Stub.class
et côté serveur AddServer.class AddServerImpl.class AddServerImpl_Stub.class AddServerIntf.class
Le message d’erreur dit tout: votre connexion a expiré. Cela signifie que votre demande n’a pas reçu de réponse dans un délai (par défaut). Les raisons pour lesquelles aucune réponse n’a été reçue sont probablement l’une des suivantes:
Notez que des pare-feu et un blocage de port ou d’IP peuvent être en place chez votre FAI
Nombre (1): L’adresse IP était incorrecte – est la bonne réponse. Le fichier / etc / hosts (C: \ Windows \ system32 \ drivers \ etc \ hosts) contient une entrée incorrecte pour le nom de l’ordinateur local. Corrigé le fichier ‘hosts’ et Camel fonctionne très bien. Merci pour le pointeur.
Si vous pointez la configuration sur un domaine (par exemple, fabrikam.com), effectuez une NSLOOKUP pour vous assurer que toutes les adresses IP qui ont répondu sont valides et peuvent être connectées au port 389:
NSLOOKUP fabrikam.com Test-NetConnection -port 389
Exception: java.net.ConnectException
Cela signifie que votre demande n’a pas reçu de réponse du serveur dans les délais impartis. Et voici quelques raisons de cette exception:
Si vous attendez une réponse retardée du système cible et estimez que DevTest met fin à la connexion, vous pouvez append ci-dessous deux propriétés au fichier local.properties et redémarrer les composants:
lisa.http.timeout.connection=0 lisa.http.timeout.socket=0 lisa.http.timeout.connection
Délai HTTP (en millisecondes) – Pour prolonger le délai d’attente de manière indéfinie, définissez les valeurs sur zéro.
Default: 15000 lisa.http.timeout.socket
Délai d’attente HTTP (en millisecondes). Pour prolonger le délai d’attente de manière indéfinie, définissez la valeur sur zéro.
Default: 180000