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

Java EE Discussion :

RMI et Eclipse


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut RMI et Eclipse
    Bonjour
    J'aimerais savoir comment générer la souche et le squelette à l'aide de la commande "rmic",et comment démarrer le registre rmi à l'aide de "start",le tout en étant sous ECLIPSE.
    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Citation Envoyé par momjunior Voir le message
    Bonjour
    J'aimerais savoir comment générer la souche et le squelette à l'aide de la commande "rmic",et comment démarrer le registre rmi à l'aide de "start",le tout en étant sous ECLIPSE.
    Merci
    Bonsoir,

    je crois que si tu codes bien les classes et l'interface de ton applications RMI eclipse appelle automatiquement le compilateur rmic....

    et pour lancer le registry de RMI il faut juste ajouter dans la fonction main() de ton serveur un appel de java.rmi.registry.LocateRegistry.createRegistry(1099).

    1099:représente le port par défaut de serveur RMI

    la méthode createRegistry est une méthode statique donc il faut pas penser à créer un objet il faut juste copier coller la ligne que je viens d'écrire.

    à bientôt

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Merci d'avoir répondu.
    Donc j'ai fait ce que tu m'as dit,j'ai copié la ligne dans le main,mais quand j'exécute le serveur rmi j'ai un message d'erreur:

    Exception in thread "main" java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkConnect(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)
    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.rebind(Unknown Source)
    at java.rmi.Naming.rebind(Unknown Source)
    at craysystems.ServeurRmi.main(ServeurRmi.java:83)
    On dirait qu'il s'agit de la stratégie de sécurité.SI c'est le cas,j'ai bien créé le fichier en faisant ceci:
    .ouvrir le policy tool
    .Cliquer sur add Policy Entry
    .Sélectionner AllPermission
    .Terminer
    Et j'ai sauvegardé le fichier dans "C:\Users\Administrateur" sous le nom ".java.policy".
    Donc voila.

    Sinon voici l'interface et la classe qui implemente l'interface:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import java.rmi.Remote;
    import java.rmi.RemoteException;
     
    public interface InterfaceRmi extends Remote
     
    {
      String insertDetails (String nom,String prenom,String sexe,String date_naiss,
    		  String pays,String adresse,String mail,String num_tel) throws RemoteException;
    }
    et
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    import java.rmi.server.UnicastRemoteObject;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    import javax.swing.JOptionPane;
     
    public class ServeurRmi extends UnicastRemoteObject implements InterfaceRmi
    {
      static ResultSet result;
      static Connection con;
      static PreparedStatement stat;
      private Database db=null;
    	public ServeurRmi() throws RemoteException
    	{
    		super();
    	}
     
    	public String insertDetails(String nom, String prenom, String sexe,
    			String dateNaiss, String pays, String adresse, String mail,
    			String numTel) throws RemoteException
    			{
    		int res = 0;
    		String sReturn ="fail";
     
    		db=new Database();
    		db.setPilote("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    		db.setConnection("jdbc:sqlserver://localhost:1433;databaseName=CraySystems", "sa", "passer");
     
    		String requete="insert into client (nom,prenom,sexe,date_naiss,pays,adresse,mail,num_tel) values(?,?,?,?,?,?,?,?)";
    		//etablir une connexion à la base de données
     
    		db.setPStatement(requete);
    		try {
    			//db.getPStmt().setInt(1,Integer.parseInt(num));
    			db.getPStmt().setString(1,nom);
    			db.getPStmt().setString(2,prenom);
    			db.getPStmt().setString(3,sexe);
    			db.getPStmt().setString(4,dateNaiss);
    			db.getPStmt().setString(5,pays);
    			db.getPStmt().setString(6,adresse);
    			db.getPStmt().setString(7,mail);
    			db.getPStmt().setString(8,numTel);
     
    			 res=db.sendRequeteLMD();  //enregistrer les informations
    			System.out.print(res);
    			if(res>0){
     
    				sReturn = "SUCCESS";
     
    			}
    			else
    			{
    				JOptionPane.showMessageDialog(null,"Erreur!");
    			}
     
    		} catch (SQLException e1) {
     
    			JOptionPane.showMessageDialog(null,"Echec de préparation de l'objet Prepared statement");
    		}
     
    		return sReturn;
    	}
     
     
     
    	public static void main(String[] args) 
    	{
     
    		System.setSecurityManager(new RMISecurityManager());
     
    		try {
    			ServeurRmi serveur = new ServeurRmi();
    			try {
    				Naming.rebind("InterfaceRmi", serveur);
    				LocateRegistry.createRegistry(1099);
    			} catch (MalformedURLException e) {
    				// TODO Auto-generated catch block
    				JOptionPane.showMessageDialog(null,"Server registered");
    			}
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			JOptionPane.showMessageDialog(null,"Echec");
    		}
    	}
     
     
     
     
    }

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Bonjour,

    c'est une exception très connu le fichier policy n'est pas facile à paramétré si tu élimine la ligne de création de sécurité manager ça va marcher mais si tu vois vraiment que tu dois sécuriser les communication réseaux je te montrerai comment ça faire un bon fichier policy je l'ai dans un doc il faut seulement que je cherche ça sur mes archives mais dans un premier temps n'utilises pas le sécrurité manager juste pour faire fonctionner ton truc

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Cool ça marche,ce problème est réglé.Maintenant il est reste celui du compilateur rmic car quand je compile j'ai le message "Echec",si tu regardes dans le main de mon code,c'est le JOptionPane de mon try-catch.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 64
    Par défaut
    Bonsoir,

    je crois que ton erreur vient de faite que tu instancies l'objet de ta classe de serveur avant de lancer le registry je crois qu'il faut faire le contraire lancer le registry et puis créer une instance de la classe de Serveur et puis la stocker dans le Naming j'espère que ça va marcher....................


    a+

  7. #7
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Par défaut
    Citation Envoyé par aziz_salut Voir le message
    c'est une exception très connu le fichier policy n'est pas facile à paramétré si tu élimine la ligne de création de sécurité manager ça va marcher mais si tu vois vraiment que tu dois sécuriser les communication réseaux je te montrerai comment ça faire un bon fichier policy je l'ai dans un doc il faut seulement que je cherche ça sur mes archives mais dans un premier temps n'utilises pas le sécrurité manager juste pour faire fonctionner ton truc
    Bonjour
    Si tu peux le retrouver ca m'intéresserai d'avoir un doc d'aide sur la creation de policy, je n'en ai pas encore trouver sue le net

    Sinon, je suis egalement en train de faire mes 1er essais et apres quelques galeres j'ai reussi a faire fonctionner le securityManager. Je suis partie du code propose sur ce site http://www.pps.jussieu.fr/~rifflet/Cours3/rmi.html
    J'ai juste modifie la classe CompteurServeur comme ceci pour eviter de lancer RMI registry manuellement et ajouter une property pour le SecurityManager

    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
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    import java.rmi.registry.LocateRegistry;
     
    /** Etapes :
     * 1 - lancer serveur de nom : Application externe : RMI registry
     * 2 - lancer le serveur d'objet : executer CompteurServeur
     * 3 - lancer le client : executer CompteurClient avec les arguments necessaire
     * 
     * Apres manip, penser a arreter le serveur d'objet et le serveur de nom
     *
     * http://www.pps.jussieu.fr/~rifflet/Cours3/rmi.html
     */
    public class CompteurServeur {
     
    	public static void main(String[] args) throws Exception {
    		//lancement du RMI registry par code au lieu du lancement par appli externe
    		LocateRegistry.createRegistry(1099);
     
    		//RMI policy
    		System.setProperty("java.security.policy", "ici mettre chemin complet vers fichier policy");
    		if(System.getSecurityManager() == null)
    			System.setSecurityManager(new RMISecurityManager());
     
    		CompteurImpl compteur = new CompteurImpl(0);
    		Naming.bind("cpt", compteur);
    	} 
    }
    Ca pourra peu etre t'aider...

    Par contre je n'arrive tjs pas a faire fonctionner CompteurImpl2. Si vous avez une idee, ca m'interesse...

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Bon ça ne marche toujours pas.J'ai toujours la même erreur.Voici ce que j'ai fait:

    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
    public static void main(String[] args) 
    	{
     
    		//System.setSecurityManager(new RMISecurityManager());
     
    		try {
     
    			try {
     
    				LocateRegistry.createRegistry(1099);
                                    System.setProperty("java.security.policy", ".java.policy");
     
     
    if(System.getSecurityManager() == null)
    			System.setSecurityManager(new RMISecurityManager());
     
     
                                    ServeurRmi serveur = new ServeurRmi();
                                    Naming.rebind("InterfaceRmi", serveur);
                                    JOptionPane.showMessageDialog(null,"Server registered");
    			} catch (MalformedURLException e) {
    				// TODO Auto-generated catch block
     
    			}
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			JOptionPane.showMessageDialog(null,"Echec");
    		}
    	}
    Une petite question: dois-je avoir la classe interface sur les 2 machines ou bien sur la machine "client" seulement?

Discussions similaires

  1. Compiler et exécuter une application RMI sur Eclipse
    Par omallal dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/12/2012, 21h56
  2. Application RMI avec eclipse
    Par arnaudkenf dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 26/08/2009, 22h32
  3. Petit projet RMI sous eclipse
    Par Goupil dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/10/2008, 22h49
  4. Configurere les rmi sous eclipse
    Par naima2005 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 03/11/2007, 20h16
  5. Comment developper du RMI avec eclipse
    Par baroudi dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 14/04/2006, 10h13

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