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 :

Java RMI récupérer la liste du registry


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Java RMI récupérer la liste du registry
    Bonjour, j'aimerais savoir si il est possible de récupérer la liste de tous les objets enregistrés dans le registry via Namig.rebind(String id, Object o) ;
    J'ai vu qu'il y a la méthode String[] list(String id), or, il faut au préalable connaître un identifiant, comment faire pour obtenir la liste si je ne connais pas d'identifiant.
    Dans mon code, je fais un lookup, mais je marque l'identifiant en brut et ça ne me plaît pas trop '^^
    Je ne sais pas si j'ai été assez clair, si vous souhaitez des précisions, n'hésitez pas ^^
    J'espère avoir un peu d'aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Voilà mon 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public class SiteServeur 
    {
    	public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException, NotBoundException 
    	{
    		SiteFactory sF = new SiteFactory() ;
    		SiteItf fils = null ;
     
    		if ( args.length < 2)
    		{
    			System.out.println("Erreur de le nombre d'arguments !") ;
    			System.exit(-1) ;
    		}
    		else if (args.length == 2 )
    		{   // le noeud n'a pas de pere
    			fils = sF.getSite(args[1], null) ;
    		}
    		// le noeud a un pere
    		else if ( args.length == 3)
    		{   // on recupere son pere, on lui affecte et on l'envoie
    			SiteItf pere = (SiteItf) Naming.lookup(args[2]) ;
    			fils = sF.getSite(args[1], pere) ;
     
    			pere.ajouterFils(fils) ;
    		}
    		else // le noeud a des freres
    		{
    			if ( args[2] != null) // un pere
    			{
    				SiteItf pere = (SiteItf) Naming.lookup(args[2]) ;
    				fils = sF.getSite(args[1], pere) ;
     
    				pere.ajouterFils(fils) ;
    			}
    			else // pas de pere
    			{
    				fils = sF.getSite(args[1], null) ;
    			}
     
    			for ( int i = 3 ; i < args.length ; i++)
    			{
    				SiteItf frere = (SiteItf) Naming.lookup(args[i]) ;
     
    				fils.ajouterFrere(frere) ;
    				frere.ajouterFrere(fils) ;
    			}	
    		}
     
    		Naming.rebind(args[1], fils) ;
    	}
    }
    Cette classe correspond au serveur, qui ajoute dans le registry un objet dont l'identifiant est passé en argument au lancement du programme.

    Et voilà le 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
    public class MessageDiffuseurInit
    {
    	private SiteItf arbre ;
     
    	public MessageDiffuseurInit() throws MalformedURLException, RemoteException, NotBoundException
    	{
    		arbre = (SiteItf) Naming.lookup("0") ;
     
    		while( arbre.getPere() != null)
    			arbre = arbre.getPere() ;
    	}
     
    	// on affiche l'arborescence de l'arbre
    	public void getList(SiteItf arbre, int esp) throws MalformedURLException, RemoteException, NotBoundException
    	{
    		if ( arbre != null)
    		{
    			esp++ ;
    			for (int i = 0 ; i < esp ; i++)
    			{
    				System.out.print(" ") ;
    			}
     
     
    			for ( int i = 0 ; i < arbre.getNbFils() ; i++)
    			{
    				System.out.println("fils de "+arbre.getNumero()+" : "+arbre.getFils(i).getNumero());
    				getList(arbre.getFils(i), esp) ;
    			}
     
    			for (int i = 0 ; i < esp ; i++)
    			{
    				System.out.print(" ") ;
    			}
     
    			for ( int i = 0 ; i < arbre.getNbFreres() ; i++)
    			{
    				System.out.println("frere de "+arbre.getNumero()+" : "+arbre.getFrere(i).getNumero());
    				getList(arbre.getFrere(i), esp) ;
    			}			
    		}	
    	}
     
    	public SiteItf getPere() 
    	{
    		return arbre;
    	}
     
    	public static void main(String args[]) throws MalformedURLException, RemoteException, NotBoundException 
    	{
    		MessageDiffuseurInit mD = new MessageDiffuseurInit() ;
     
    		System.out.println(mD.getPere().getNumero());
    		mD.getList(mD.getPere(), 1) ;
     
    		Scanner sc = new Scanner(System.in) ;
     
    		System.out.println("Dans quel noeud initier la diffusion ? ") ;
     
    		String rep = sc.nextLine() ;
     
    		SiteItf arbreDiff = (SiteItf) Naming.lookup(rep) ;
     
    		ArrayList<Byte> data = new ArrayList<Byte>() ;
     
    		int continuer = 1 ;
     
    		//entree des donnees a diffuser
    		while ( continuer == 1 )
    		{
    			System.out.println("Entrer les donnees a diffuser : ") ;
    			data.add(sc.nextByte()) ;
     
    			System.out.println("Continuer d'entrer des donnees ? 1 oui 0 non ") ;
    			continuer = sc.nextInt() ;
    		}
     
    		Byte[] donnees = new Byte[data.size()] ;
     
    		for ( int i = 0 ; i < donnees.length ; i++)
    			donnees[i] = data.get(i) ;
     
    		//thread pour diffuser de maniere concurrente les donnees
    		ThreadDiffuseur tDiff = new ThreadDiffuseur(arbreDiff, donnees, arbreDiff.getNumero()) ;
    		Thread t = new Thread(tDiff) ;
    		t.start() ;
    	}
    }
    Donc comme vous le voyez, je fais un lookup sur l'objet qui a pour identifiant 0, or, je souhaiterais justement faire un lookup sur un objet dont l'identifiant est passé en paramètre au constructeur par exemple.
    J'avais pensé utiliser justement un autre objet rmi qui stocke les identifiants au fur et mesure des instanciations.
    Je voudrais justement savoir s'il existe un moyen d'obtenir directement la liste des identifiants contenu dans le registry, quelque chose du genre
    String[] liste = Naming.getList() ;
    par exemple, or, Naming ne possède que list mais, il est nécessaire de connaître au moins un identifiant pour cette méthode.
    Voilà, j'espère avoir été plus clair ^^

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Au temps pour moi '^^
    La méthode permet de récupérer la liste du registry via une url passée en paramètre ( j'avais mal lu la javadoc).

Discussions similaires

  1. Récupérer une liste java en javascript
    Par developpeur_débutant dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/09/2014, 16h12
  2. Java RMI : Liste des clients
    Par med7sassi dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 20/03/2012, 17h20
  3. Réponses: 4
    Dernier message: 12/10/2009, 18h55
  4. Réponses: 6
    Dernier message: 13/03/2009, 22h18
  5. Récupèrer la liste des disques durs
    Par Tililian dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/06/2003, 13h42

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