IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[RMI] Lancement du serveur


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut [RMI] Lancement du serveur
    Bonjour,

    Je suis entrain d'apprendre à utiliser RMI, je souhaiterais simplement mettre en place un mécanisme de rappel du client lorsque le serveur finit un calcul nécessitant des ressources.

    Mais avant cela j'ai un premier soucis et pas des moindres : le lancement du serveur...

    J'ai cherché sur le Web mais je n'ai pas trouvé une réponse claire sur le pourquoi du comment... Voici l'erreur que j'obtiens au lancement :

    java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is:
    java.net.ConnectException: Connection refused
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    at echo.Echo.main(Echo.java:26)
    Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
    at java.net.Socket.connect(Socket.java:546)
    at java.net.Socket.connect(Socket.java:495)
    at java.net.Socket.<init>(Socket.java:392)
    at java.net.Socket.<init>(Socket.java:206)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 5 more
    Et voici le code qui va avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    package echo;
     
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    import java.rmi.server.UnicastRemoteObject;
     
    import echo.interfaces.EchoRemote;
     
    public class Echo extends UnicastRemoteObject implements EchoRemote {
     
      private static final long serialVersionUID = -570053917036856015L;
     
      public Echo () throws RemoteException {
        super ();
      }
     
      public String echo (String msg) throws RemoteException {
        return "[" + msg + "]";
      }
     
      public static void main (String[] args) {
        try {
          Registry reg = LocateRegistry.getRegistry (1099);
          Echo server = new Echo ();
          reg.rebind ("server", server);
          System.out.println ("Ready");
        } catch (RemoteException e) {
          e.printStackTrace ();
        }
      }
     
    }
    L'interface de l'objet précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package echo.interfaces;
     
    import java.rmi.Remote;
     
    public interface EchoRemote extends Remote {
     
    	String echo (String msg) throws RemoteException;
     
    }
    Pour information, je suis sous linux dans le cas où une configuration système serait nécessaire.

    Merci à vous.

    --
    Sperca

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,
    Étonnant que tu n'est rien trouvé sur le web, car il y a ce qu'il faut !
    Enfin, la réponse est la suivante :
    La Registry n'est pas lancé. Pour ce faire, tu as deux possibilités :
    - tu lances la commande "rmiregistry" dans un terminal (pour l'arrêter un ctrl+c suffit).
    - ou tu changes ton code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    package echo;
     
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    import java.rmi.server.UnicastRemoteObject;
     
    import echo.interfaces.EchoRemote;
     
    public class Echo extends UnicastRemoteObject implements EchoRemote {
     
      private static final long serialVersionUID = -570053917036856015L;
     
      public Echo () throws RemoteException {
        super ();
      }
      
      public String echo (String msg) throws RemoteException {
        return "[" + msg + "]";
      }
      
      public static void main (String[] args) {
        try {
          //Registry reg = LocateRegistry.getRegistry (1099);
          Registry reg = LocateRegistry.createRegistry (1099);
          Echo server = new Echo ();
          reg.rebind ("server", server);
          System.out.println ("Ready");
        } catch (RemoteException e) {
          e.printStackTrace ();
        }
      }
      
    }
    Attention si tu la démarres par le code, lorsque ton main va se terminer, la registry sera arrêtée.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    Salut,

    Merci pour ta réponse effectivement ça fonctionne mieux comme ça !

    J'utilise Eclipse comme éditeur pour le langage Java et j'essayais de lancer le serveur à travers lui. Or si j'utilise javac pour compiler puis je lance l'application avec java là ça fonctionne.

    Donc si quelqu'un sait pourquoi ça ne fonctionne pas à partir d'Eclipse, je suis preneur.

    Merci à vous.

    Sperca

    EDIT : j'avais lu trop vite la première fois...

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    quel est le problème exactement avec eclipse ? Quel message tu as ?
    Sans plus de précision il est pas possible de t'aider !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. RMI et les serveur d'applications
    Par Klemsy78 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 11/10/2007, 16h05
  2. Lancement Auto Serveur Java
    Par theyankee76 dans le forum Autres
    Réponses: 3
    Dernier message: 19/06/2007, 18h03
  3. problème au lancement du serveur
    Par Elodie31 dans le forum CORBA
    Réponses: 1
    Dernier message: 14/06/2007, 16h47
  4. PB de lancement de serveur IIS
    Par mercuriamasof dans le forum ASP
    Réponses: 3
    Dernier message: 02/12/2004, 11h41
  5. RMI:Client Windows Serveur Unix
    Par abd21 dans le forum CORBA
    Réponses: 1
    Dernier message: 10/06/2004, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo