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

API standards et tierces Java Discussion :

[RMI] probleme d'accès sur le serveur


Sujet :

API standards et tierces Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut [RMI] probleme d'accès sur le serveur
    salut à tous,
    j'ai creer une petite application client serveur en utilisant la technologie rmi. quand j'execute le client et le serveur sur la meme machine tout marche bien.
    mai en executant le client sur une machine distante j'ai ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.rmi.ConnectIOException: Exception creating connection to: 0.1.0.4; nested exception is:java.net.NoRouteToHostException: No route to host: connect
            at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:614)
            at n.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198
    je ne sais meme pas d'ou viens le quelqu'un a une idée sur le message d'erreur ?
    merci d'avance pour votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Quel syntaxe utilises tu pour executer ... ??

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    j'ai creer un fichier jar pour le client. donc j'execute juste le fichier jar en mode DOS:

  4. #4
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Ton client tente de se connecter au serveur via l'ip 0.1.0.4 qui n'est pas valide. Tu dois avoir une ligne de ce genre dans ton code :
    Registry registry = LocateRegistry.getRegistry(host);
    Avec host valorisé à 0.1.0.4.
    Remple host par le nom DNS ou l'IP de ton serveur

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    salut,
    je ne pense pas avoir une ligne de ce genre dans mon code client. si tu veux je te montre le code ?

  6. #6
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    L'exception est explicite, je veux bien le code oui...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    voici le code client :

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
     
    public class InterfaceCompte extends JFrame implements ActionListener {
     
    	JFormattedTextField txtnumero,txtsolde,txtdecouvert,txtdate,txtcode;
    	JTextField txtnom,txtprenom;
    	JButton bvalider,banuler;
    	JCheckBox ch=new JCheckBox("Compte Cheque");
    	JLabel decouvre;
     
    	InterfaceCompte(){
    		this.setTitle("Creation d'un Compte");
    		this.setResizable(false);
    		this.setSize(350,500);
    		Container contenu = this.getContentPane();
     
    		JPanel paneau1 = new JPanel(new GridLayout(2,1));
    		JPanel paneau2 = new JPanel();
    		JPanel panHaut = new JPanel(new GridLayout(7,2));
    		//JPanel panBas = new JPanel(new GridLayout(3,2));
    		JPanel panBoutonHaut = new JPanel();
     
    		contenu.add(paneau1,BorderLayout.CENTER);
    		contenu.add(paneau2,BorderLayout.SOUTH);
     
    		paneau1.add(panHaut,BorderLayout.NORTH);
    		paneau1.add(panBoutonHaut,BorderLayout.SOUTH);
     
    		try {
    		MaskFormatter formata = new MaskFormatter("##########");
    		MaskFormatter formatb = new MaskFormatter("##/##/####");
    		MaskFormatter formatc = new MaskFormatter("AAA");
    		txtnumero = new JFormattedTextField(formata);
    		txtdate = new JFormattedTextField(formatb);
    		txtcode = new JFormattedTextField(formatc);
    		}
    		catch (java.text.ParseException exc) {
    			exc.printStackTrace();
        	}
    		NumberFormat format2 = NumberFormat.getInstance();
    		format2.setMinimumIntegerDigits(1);
    		txtnom = new JTextField("");
    		txtprenom = new JTextField("");
    		txtsolde = new JFormattedTextField(format2);
    		txtdecouvert = new JFormattedTextField(format2); txtdecouvert.setVisible(false);
    		bvalider = new JButton("Creer"); bvalider.addActionListener(this);
    		banuler = new JButton("Annuler"); banuler.addActionListener(this);
    		decouvre = new JLabel("Decouvert"); decouvre.setVisible(false);
    		panHaut.add(new JLabel("Code du client")); panHaut.add(txtcode);
    		panHaut.add(new JLabel("Prenom")); panHaut.add(txtprenom);
    		panHaut.add(new JLabel("Nom")); panHaut.add(txtnom);
    		panHaut.add(new JLabel("Date de Naissance(dd/mm/aaaa)")); panHaut.add(txtdate);
    		panHaut.add(new JLabel("Solde")); panHaut.add(txtsolde);
    		panHaut.add(new JLabel("Numero Compte")); panHaut.add(txtnumero);
    		panHaut.add(decouvre); panHaut.add(txtdecouvert);
    		ch.addActionListener(this);
    		panBoutonHaut.add(ch);// panBoutonHaut.add(type);
    		//panHaut.setBorder(new TitledBorder("Ouverture de Compte Personnel"));
    		Font f = new Font("Times New Roman",Font.ITALIC,12);
    		TitledBorder t = new TitledBorder(new LineBorder(Color.gray,1),"Ouverture de Compte Personnel",TitledBorder.LEFT, TitledBorder.TOP,f); 
    		paneau1.setBorder(t);
    		Border b = BorderFactory.createLineBorder (Color.blue .darker ( ) ,5);
    		paneau2.setBorder(b);		
    		paneau2.add(bvalider); paneau2.add(banuler);
    		//panBas.setBorder(new TitledBorder("Transaction sur le Solde"));
    		Font f2 = new Font("Times New Roman",Font.ITALIC,12);
    		TitledBorder t2 = new TitledBorder(new LineBorder(Color.gray,1),"Ouverture de Compte Personnel",TitledBorder.LEFT, TitledBorder.TOP,f2); 
    		paneau2.setBorder(t2);
     
    		bvalider.addKeyListener(
                    new KeyAdapter() {                    
                        public void keyPressed(KeyEvent e) {                        
                            int code = e.getKeyCode ();
                            if (code == KeyEvent.VK_ENTER){
                            	InterfaceCompte.this.actionPerformed(new ActionEvent(e.getSource(),e.getID(),((JButton)e.getSource()).getActionCommand()));
                            }                    
                        }                    
                    }
            );
    		// bcreer.setDefaultCapable(true);
     
    		banuler.addKeyListener(
                    new KeyAdapter() {                    
                        public void keyPressed(KeyEvent e) {                        
                            int code = e.getKeyCode ();
                            if (code == KeyEvent.VK_ENTER){
                            	InterfaceCompte.this.actionPerformed(new ActionEvent(e.getSource(),e.getID(),((JButton)e.getSource()).getActionCommand()));
                            }                    
                        }                    
                    }
            );
    	}	
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource()==ch){
    			txtdecouvert.setVisible(true);
    			decouvre.setVisible(true);
    		}
    		if(ch.isSelected()==false){
    			txtdecouvert.setVisible(false);
    			decouvre.setVisible(false);
    		}
     
     
    		if(e.getSource()==banuler){
    			this.setVisible(false);
    		}
     
     
    		if(e.getSource()==bvalider){
    			//System.setSecurityManager(new RMISecurityManager());
    			Pattern    motifLettres  =  Pattern.compile ("^[a-z;A-Z]+$");
    			if(txtcode.getValue()==null||txtprenom.getText().equals("")||txtnom.getText().equals("")||txtdate.getValue()==null||txtsolde.getValue()==null||txtnumero.getValue()==null) 
    				JOptionPane.showMessageDialog (this,"Veuillez remplir tous les champs","Erreur remplissage",JOptionPane.INFORMATION_MESSAGE, null);
    			else {
    				if((ch.isSelected()!=false)&&(txtdecouvert.getValue()==null))
    					JOptionPane.showMessageDialog (this,"Veuillez remplir le champd decouvert!","Erreur remplissage",JOptionPane.INFORMATION_MESSAGE, null);
    				else{
    				if (! motifLettres.matcher (this.txtprenom.getText ()).matches ()||! motifLettres.matcher (this.txtnom.getText ()).matches ())
    								JOptionPane.showMessageDialog (this,"Les champs Nom,Prenom ne doivent contenir que des caracteres alphabetiques !","Erreur remplissage",JOptionPane.INFORMATION_MESSAGE, null);
    				else {		
    							boolean b=false;
     
    							String c = txtcode.getText();
    							String p = txtprenom.getText();
    							String n = txtnom.getText();
    							String dt = (String)txtdate.getValue();
    							double s = (double)Double.parseDouble(""+txtsolde.getValue());
    							String num = (String)txtnumero.getValue();
    							if(ch.isSelected()==false){
    								double dc = 0;
    								try{
    									ICompte objet = (ICompte)Naming.lookup("rmi://192.168.1.108/obj");
    									b = objet.creeCompte(p,n,dt,s,num,dc,c);
    								}
    								catch (Exception o) {o.printStackTrace();}
    							}
    							else {
    								double dc = (double)Double.parseDouble(""+txtdecouvert.getValue());
    								try{
    									ICompte objet = (ICompte)Naming.lookup("rmi://192.168.1.108/obj");
    									b = objet.creeCompte(p,n,dt,s,num,dc,c);
    								}
    								catch (Exception o) {o.printStackTrace();}
    							}
     
    							if(b==true)
    								JOptionPane.showMessageDialog (this,"Le compte "+num+" a été créé avec succès!","Creation Compte",JOptionPane.INFORMATION_MESSAGE, null);
    							else
    								JOptionPane.showMessageDialog (this,"Impossible de créer le compte. Contacter votre administrateur Système","Erreur Creation Compte",JOptionPane.INFORMATION_MESSAGE, null);
    				  }
    				}			 	
     
    			}
     
    		}
     
    	}
     
    	/* public static void main(String[] args) {
    		new InterfaceCompte().setVisible(true);
     
    	} */
     
    }

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    svp! personne ne peut m'aider sur ça ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Si tu utilise bien RMI, il faut que dans ton programme client tu fasse quelque chose comme :
    InterfaceObj obj = (InterfaceObj )Naming.lookup("rmi://IPServeur: PortServeurUtilisé/NomDeObjEnregistré");

    En fait, du coté serveur, tu enregistre ton objet distribué dans le registre RMI avec :

    Naming.rebind("NomDeObjEnregistré",ObjDistrib);

    Du coté client, tu récupère une référence sur cet objet en faisant une recherche dans le registre des noms RMI qui se trouve sur le serveur, d'où le Naming.lookup et l'adresse IP du serveur..

    Essaye de deboguer ton code pour voir à quel moment se déclenche ton exception ...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Au fait !! ta machine client et celle du serveur sont directement liées dans un même réseau ou tu passe par internet ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    les deux machines sont liées dans le meme reseau. en plus ce que tu me demande de faire coté code client, je l'ai deja fait en bas du code ci-dessus. neanmoins je reécrit le bout du code faisant appel au serveur:

    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
     
    if(ch.isSelected()==false){
       double dc = 0;
       try{
         ICompte objet = (ICompte)Naming.lookup("rmi://192.168.1.108/obj");
         b = objet.creeCompte(p,n,dt,s,num,dc,c);
       }
        catch (Exception o) {o.printStackTrace();}
    }
    else {
        double dc = (double)Double.parseDouble(""+txtdecouvert.getValue());
         try{
           ICompte objet = (ICompte)Naming.lookup("rmi://192.168.1.108/obj");
           b = objet.creeCompte(p,n,dt,s,num,dc,c);
         }
          catch (Exception o) {o.printStackTrace();}
    }
    seulement à la place de l'adresse 192.168.1.108, dans le message j'ai l'adresse 0.1.0.4
    c'est ce que je n'arrive pas à comprendre deja.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    As tu déboguer ton code pour voir à quel ligne tu déclenche l'exception ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 140
    Points : 170
    Points
    170
    Par défaut
    Autre remarque importante .. Est ce que tu peux bien faire un ping entre le client et le serveur ?

  14. #14
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    je ne sais pas ce qui s'est passé, j'ai juste recreer un nouveau jar pour le client. et tout marche.
    bon je me contente de ça, bien vrai que je voulais quand meme savoir d'où venait l'adresse 0.1.0.4 qu'il m'affichait avant.
    merci à tous pour avoir essayer de m'aider.
    a +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droit d'acces sur un serveur de jeux
    Par ruty dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 24/01/2007, 13h57
  2. [MetaData] probleme d'acces sur certaines
    Par BainE dans le forum JDBC
    Réponses: 1
    Dernier message: 03/10/2006, 12h01
  3. base acces sur un serveur ftp
    Par pobrouwers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 31/08/2006, 23h22
  4. Problème de performance sur un serveur
    Par vbcasimir dans le forum Administration système
    Réponses: 3
    Dernier message: 30/06/2006, 01h08
  5. [apache] probleme d'accès à mon propre serveur
    Par sunfunfree dans le forum Apache
    Réponses: 6
    Dernier message: 15/02/2005, 16h16

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