Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Autres
Autres Vos questions sur les autres serveurs d'application Java.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/03/2012, 12h34   #1
Zysce
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 2
Points : 2
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.
Zysce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2012, 08h50   #2
Zysce
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 2
Points : 2
Voilà mon code :

Code :
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 :
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 ^^
Zysce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2012, 10h44   #3
Zysce
Invité de passage
 
Homme
Étudiant
Inscription : mai 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 11
Points : 2
Points : 2
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).
Zysce est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h01.


 
 
 
 
Partenaires

Hébergement Web