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 :

JAVA et RMI !


Sujet :

Entrée/Sortie Java

  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut JAVA et RMI !
    Bonjour,

    Je ne parle pas encore couramment JAVA, donc j'aurais besoin de votre aide pouvoir tester mes scripts JAVA RMI.

    Je travail sous XP, eclipse 3.5.1 et java 1.6
    >java -version
    java version "1.6.0_17"
    Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
    Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
    J'essaye d'apprendre à faire du RMI.

    J'ai crée un package test_rmi. Voici mes classes :
    • interface : Information

    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
    package test_rmi;
    /* Définition d'une interface qui contient les méthodes qui 
     * peuvent être appelées à distance
     */
    import java.rmi.*;
     
    /*
     * L'interface à définir doit hériter de l'interface java.rmi.Remote. 
     * Cette interface ne contient aucune méthode mais indique
     * simplement que l'interface peut être appelée à distance.
     * L'interface doit contenir toutes les méthodes qui seront succeptibles d'être appelées à distance.
     */
    public interface Information extends Remote {
    	/*
    	 * Chaque méthode appelée à distance doit déclarer qu'elle est en mesure de lever l'exception
    	 */
    	public String getInformation() throws RemoteException;
     }
    • Classe implémentant l'interface : TestRMIServeurImpl


    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
    package test_rmi;
    import java.rmi.*;
    import java.rmi.server.*;
     
    /*
     * Classe qui implémente notre interface Information.
     * Cette classe correspond à l'objet distant. Elle doit donc implémenter 
     * l'interface définie et contenir le code nécessaire.
     * 
     * héritage de UnicastRemoteObject obligatoire
     */
    public class TestRMIServeurImpl extends UnicastRemoteObject implements Information {
    	protected TestRMIServeurImpl() throws RemoteException {
    		super();
    	}
     
    	public String getInformation() throws RemoteException {
    		return "bonjour";
    	}
    }
    • Classe qui instancie l'objet : MonServeur


    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 test_rmi;
     
    import java.rmi.*;
    import java.rmi.registry.*;
     
    /*
     * Classe qui instancie l'objet et l'enregistre
     * dans le registre en lui affectant un nom.
     */
    public class MonServeur {
     
    	public static void main(String[] args) {
    		Registry registre;
    		try {
    			System.out.println("Enregistrement du serveur");
    			// L'instanciation d'un objet de la classe distante : TestRMIServeurImpl
    			TestRMIServeurImpl ServeurRmi = new TestRMIServeurImpl();
     
    			// L'enregistrement dans le registre de nom RMI en lui donnant un nom
    			System.out.println("Enregistrement du serveur");
     
    			//Naming.rebind( "rmi://localhost:1099/MonObjetServeur", ServeurRmi );
     
    			registre = LocateRegistry.getRegistry("localhost");
    			registre.rebind("rmi://localhost:1099/MonObjetServeur", ServeurRmi);
    			System.out.println("Serveur lancé");
     
    		} catch (RemoteException e) {
    			System.out
    					.println("Pb RMI, exception capturée : " + e.getMessage());
     
    		}
    	}
     
    }
    • Le client : MonClient


    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
    package test_rmi;
     
    import java.rmi.*;
    import java.rmi.registry.*;
     
    /*
     * 1- Obtention d'une référence sur l'objet distant à partir de son nom
     * 2- Appel de la méthode à partir de cette référence
     */
    public class MonClient {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Registry registre;
    		Information Serveur;
     
    		try {
    			registre = (Registry) LocateRegistry.getRegistry("localhost");
    			Serveur = (Information) registre.lookup("rmi://localhost:1099/MonObjetServeur");
    			System.out.println("resultat : " + Serveur.getInformation());
    		} catch (RemoteException e) {
    			System.out.println("Pb RMI : ");
    			e.printStackTrace();
     
    		}
    		catch (NotBoundException e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    Quand j'exécute le code MonClient via eclipse, j'obtiens un message d'erreur :
    Pb RMI :
    java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
    at sun.rmi.server.UnicastRef.newCall(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at test_rmi.MonClient.main(MonClient.java:22)
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
    ... 6 more
    Dans la documentation, il est demandé de générer les classes stub et skeleton. stub est une classe coté client et skeleton est coté serveur. Les deux classes gèrent les mécanismes d'appel, de communication, d'exécution, de renvoi et de réception des résultats.

    J'ai donc essayé de l'exécuter par eclipse :
    Executer => Outils externe => configuration outils externes.
    J'y ai rajouté deux programmes :
    - rmic et rmiregistry
    1- rmic
    emplacement : C:\Program Files\Java\jdk1.6.0_17\bin\rmic.exe
    Répertoire travail : ${workspace_loc:/PROJET/bin}
    Argument : test_rmi.TestRMIServeurImpl
    => appliquer et exécuter
    Cela m'a généré un fichier TestRMIServeurImpl_Stub.class mais je n'ai pas de fichier TestRMIServer_Skel.class
    Je suis obligé de rajouter l'option -vcompat pour que le fichier TestRMIServer_Skel.class se crée.

    2- rmiregistry
    emplacement : C:\Program Files\Java\jdk1.6.0_17\bin\rmiregistry.exe
    Répertoire : ${project_loc}
    => appliquer et exécuter
    Rien de spécial

    Je relance MonClient et voici le message d'erreur maintenant :
    java.rmi.NotBoundException: rmi://localhost:1099/MonObjetServeur
    at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
    at sun.rmi.transport.Transport$1.run(Transport.java:159)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at test_rmi.MonClient.main(MonClient.java:22)
    Quelqu'un peut il m'aider ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    Bonjour,

    Jette un coup d'oeil ici : http://www.developpez.net/forums/d83...petit-exemple/

    L'exemple marche j'ai essayé sur ma machine.

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Quel exemple, le mien ou celui de l'autre thread ? Et pourquoi mon exemple ne fonctionne pas ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    Je parle de l'exemple dans le lien qui est a peut près ce que tu veux faire.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Le problème est que ça ne m'aide pas à savoir pourquoi mes scripts ne fonctionnent pas. Ce n'est pas en copiant collant les autres scripts que ça m'avancera, mon problème n'est pas juste que ça marche, mais de comprendre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    Comparer ce que tu as fait avec ce qui marche n'est pas possible?

    C'est exactement la même chose, le serveur possède une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getInformation() throws RemoteException {
    		return "bonjour";
    	}
    que le client appelle à distance.

    et tu as regardé le dernier post de la discussion? A propose d'un fichier policy? Sans celui ci tu auras toujours des Connection refused

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je n'ai pas de fichiers policy, mais dans mon message d'erreur. Ca sert à quoi? pourrais avoir plus d'explication sur ce fichier ! Dans le cours que j'ai, on ne me parle pas de ce fichier.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    J'ai crée un fichier policy.txt dans le répertoire bin/test_rmi

    grant {
    permission java.security.AllPermission;
    };
    java -Djava.security.policy=policy.txt TestRMIServeurImpl
    Exception in thread "main" java.lang.NoClassDefFoundError: TestRMIServeurImpl (wrong name: test_rmi/TestRMIServeurImpl)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    Could not find the main class: TestRMIServeurImpl. Program will exit.
    Dans le répertoire, j'ai ceci :
    20/11/2009 14:39 523 TestRMIServeurImpl.class
    20/11/2009 14:15 1*411 MonServeur.class
    23/11/2009 12:10 54 policy.txt
    20/11/2009 14:15 236 Information.class
    20/11/2009 14:55 1*436 MonClient.class
    23/11/2009 12:20 1*714 TestRMIServeurImpl_Stub.class

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    essaie de mettre le chemin complet pour policy.txt

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    j'ai déjà essayé et ça ne change rien. Et j'exécute la commande en étant dans le répertoire en question

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    et si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java TestRMIServeurImpl
    ça marche ?

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Depuis eclipse, non

    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
    java.rmi.NotBoundException: rmi://localhost/MonObjetServeur
    	at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
    	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
    	at sun.rmi.transport.Transport$1.run(Transport.java:159)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    	at java.lang.Thread.run(Thread.java:619)
    	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    	at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    	at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    	at test_rmi.MonClient.main(MonClient.java:22)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    lance depuis Eclipse en ajoutant ça comme paramètre JVM:

    -Djava.security.policy=policy.txt

    ça donne quoi?

  14. #14
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par toto828 Voir le message
    lance depuis Eclipse en ajoutant ça comme paramètre JVM:

    -Djava.security.policy=policy.txt

    ça donne quoi?
    idem
    java.rmi.NotBoundException: rmi://localhost/MonObjetServeur
    at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
    at sun.rmi.transport.Transport$1.run(Transport.java:159)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at test_rmi.MonClient.main(MonClient.java:22)

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 138
    Par défaut
    je ne sais pas alors. Essaie de partir de l'exemple qui marche, modifie le petit bout par petit bout pour obtenir ton programme et tu veras d'où vient l'erreur.

  16. #16
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    je vais faire ça, merci

  17. #17
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bon, je n'arrive toujours pas à faire fonctionner RMI, j'ai fait des modifications, mais rien à faire.

    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
    package test_rmi;
    /*
     * Définition d'une interface qui contient les méthodes qui 
     * peuvent être appelées à distance
     */
    import java.rmi.*;
     
    /*
     * L'interface à définir doit hériter de l'interface java.rmi.Remote. 
     * Cette interface ne contient aucune méthode mais indique
     * simplement que l'interface peut être appelée à distance.
     * L'interface doit contenir toutes les méthodes qui seront succeptibles d'être appelées à distance.
     */
    public interface Information extends Remote {
    	/*
    	 * Chaque méthode appelée à distance doit déclarer qu'elle est en mesure de lever l'exception
    	 */
    	public String getInformation() throws RemoteException;
     }
    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 test_rmi;
    import java.rmi.*;
    import java.rmi.server.*;
     
    /*
     * Classe qui implémente notre interface Information.
     * Cette classe correspond à l'objet distant. Elle doit donc implémenter 
     * l'interface définie et contenir le code nécessaire.
     * 
     * héritage de UnicastRemoteObject obligatoire
     */
    public class TestRMIServeurImpl extends UnicastRemoteObject implements Information {
     
    	protected TestRMIServeurImpl() throws RemoteException {
    		super();
    	}
     
    	public String getInformation() throws RemoteException {
    		return "bonjour";
    	}
     
        public static void main(String[] args) {
        	try {
        		java.rmi.registry.LocateRegistry.createRegistry(1099);
        		System.out.println("Mise en place du Security Manager ...");
        		System.setSecurityManager(new java.rmi.RMISecurityManager());
        		TestRMIServeurImpl testRMIServer = new TestRMIServeurImpl();
        		System.out.println("Enregistrement du serveur");
        		Naming.rebind("rmi://localhost/TestRMI", testRMIServer);
        	}
        	catch (Exception e) { System.out.println("Exception capturée: " + e.getMessage()); }
        }
    }
    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
    package test_rmi;
     
    import java.rmi.*;
    //import java.rmi.registry.*;
     
    /*
     * 1- Obtention d'une référence sur l'objet distant à partir de son nom
     * 2- Appel de la méthode à partir de cette référence
     */
    public class MonClient {
     
        public static void main(String[] args) {
     
            String s="";
     
            try {
    			Remote r = Naming.lookup("rmi://localhost/TestRMI");
    			if (r instanceof Information) {
    				s = ((Information) r).getInformation();
    			}
            } catch (Exception e) {
            	System.out.println(e.getMessage());
            }
            System.out.println("chaine retournée = "+s);   
        }
    }
    Et maintenant, j'ai ce message d'erreur :
    Connection refused to host: localhost; nested exception is:
    java.net.ConnectException: Connection refused: connect
    chaine retournée =

  18. #18
    Membre à l'essai
    Profil pro
    Enseigant-chercheur
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseigant-chercheur

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Citation Envoyé par djibril Voir le message
    Bonjour,
    Je ne parle pas encore couramment JAVA, donc j'aurais besoin de votre aide pouvoir tester mes scripts JAVA RMI.
    Salut,

    Ton code marche correctement chez moi (java 1.6, MacOSX, ligne de commande).

    Après la compilation, j'ai le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    lam-saoz:src sunye$ java test_rmi.MonServeur &
    [2] 26696
    lam-saoz:src sunye$ Enregistrement du serveur
    Enregistrement du serveur
    Serveur lancé
     
    lam-saoz:src sunye$ java test_rmi.MonClient 
    resultat : bonjour

    Le premier message d'erreur est normal lorsque le rmiregistry n'est pas lancé.

    Le deuxième message d'erreur semble indiquer que l'objet n'a pas été exporté. Es-tu sûr d'avoir lancé le serveur avant de lancer le client ?

    Amicalement,

    G. Sunyé

  19. #19
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par sunye Voir le message
    Salut,

    Ton code marche correctement chez moi (java 1.6, MacOSX, ligne de commande).

    Après la compilation, j'ai le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    lam-saoz:src sunye$ java test_rmi.MonServeur &
    [2] 26696
    lam-saoz:src sunye$ Enregistrement du serveur
    Enregistrement du serveur
    Serveur lancé
     
    lam-saoz:src sunye$ java test_rmi.MonClient 
    resultat : bonjour

    Le premier message d'erreur est normal lorsque le rmiregistry n'est pas lancé.

    Le deuxième message d'erreur semble indiquer que l'objet n'a pas été exporté. Es-tu sûr d'avoir lancé le serveur avant de lancer le client ?

    Amicalement,

    G. Sunyé
    Bon, tu me rassures déjà.
    bah, je fais tout ça par eclipse, donc je ne sais pas si je me suis mal pris !!

  20. #20
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Quand je compile MonServeur, j'ai ce message d'erreur :

    instanciation de la classe distante : TestRMIServeurImpl
    Enregistrement du serveur
    Pb RMI, exception capturée : RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: test_rmi.TestRMIServeurImpl_Stub
    Voici son code :
    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 test_rmi;
     
    import java.rmi.*;
    import java.rmi.registry.*;
     
    /*
     * Classe qui instancie l'objet et l'enregistre
     * dans le registre en lui affectant un nom.
     */
    public class MonServeur {
     
    	public static void main(String[] args) {
    		Registry registre;
    		try {
    			System.out.println("instanciation de la classe distante : TestRMIServeurImpl");
    			// L'instanciation d'un objet de la classe distante : TestRMIServeurImpl
    			TestRMIServeurImpl ServeurRmi = new TestRMIServeurImpl();
     
    			// L'enregistrement dans le registre de nom RMI en lui donnant un nom
    			System.out.println("Enregistrement du serveur");
     
    			//Naming.rebind( "rmi://localhost:1099/MonObjetServeur", ServeurRmi );
     
    			registre = LocateRegistry.getRegistry("localhost");
    			registre.rebind("rmi://localhost:1099/MonObjetServeur", ServeurRmi);
    			System.out.println("Serveur lancé");
     
    		} catch (RemoteException e) {
    			System.out
    					.println("Pb RMI, exception capturée : " + e.getMessage());
     
    		}
    	}
     
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Framework] [RMI] java.rmi.UnmarshalException
    Par YokoSop dans le forum Spring
    Réponses: 12
    Dernier message: 08/12/2010, 15h29
  2. Communication entre deux programmes Java. http ? Rmi ? WS ? Autres ?
    Par tiboudchou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 26/03/2009, 12h50
  3. Problème JAVA et RMI
    Par Didi34 dans le forum Langage
    Réponses: 18
    Dernier message: 23/12/2008, 10h38
  4. Erreur de connexion : java RMI & linux
    Par pedouille dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/05/2006, 20h04
  5. Problême de Socket avec un applet java (RMI/policy)
    Par Vesperal dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/04/2006, 12h00

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