J'ai utilisé le 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(String 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(String args[]) {
try {
String 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 compile tous ces fichiers. Ensuite, je crée une stub
en utilisant rmic AddServerImpl
. Après cela, je lance le registre rmi côté serveur en utilisant start rmiregistry
. Puis je lance le serveur en utilisant Java AddServer
et enfin le client en utilisant Java AddClient 27.60.200.80 5 9
.Mais rien ne se passe
L'exception émise côté client est Java.net.ConnectException : connection timed out : connect
Quelle est la raison et comment puis-je résoudre ce problème?
Sur l'ordinateur client, il s'agit des fichiers .class suivants AddClient.class AddServerImpl.class AddServerImpl_Stub.class
et du 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
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:
Nombre (1): L'adresse IP était incorrecte - est la bonne réponse. Le fichier/etc/hosts (a.k.a . C:\Windows\system32\drivers\etc\hosts) comportait une entrée incorrecte pour le nom de la machine locale . Corrigé le fichier 'hosts' et Camel fonctionne très bien. Merci pour le pointeur.