# JNDI Verzeichnissbäume suchen



## BigBoss (24. Apr 2007)

hi,

Ich habe folgendes Problem.
Ich habe mir eine Klasse (Swing) geschrieben mit der ich mich an einem Verzeichnissdienst Anmelden kann.
Nun such ich noch eine Möglichkeit bei der Anmeldung mir alle Verfügbaren Bäume anzeigen zu lassen.
Also wer z.B. ein Novell netz hat der kann einfach beim Anmelden auf Bäume klicken und bekommt alle in der NDS angelegten Bäume angezeigt und kann sich dann einen Auswählen.
Ich hab leider nix gefunden mit dem ich eine Liste bekommen könnte, da ich bei jedem Zugriff über JNDI auf einen Verzeichnissdienst den Startcontext angeben muss was ja der Baum ist.

Hat jemand ne idee bzw eine Lösung?

Thx BB


----------



## Ullenboom (25. Apr 2007)

Wenn man den Context zu einem ganz speziellen Verzeichnisdienst hat, dann kann man den ja rekursiv nach Elemten mit Innerer Context (Sub-Kontext) ablaufen.

Für JBoss etwa:

Context ctx = new InitialContext();

for ( NamingEnumeration e = ctx.list(""); 
      e.hasMore(); ) {
  NameClassPair p = (NameClassPair) e.next();
  System.out.println( "Name: " + p.getName() + 
               ", Classname: " + p.getClassName() );
}

Ein Ausschnitt:

Name: jmx, Classname: org.jnp.interfaces.NamingContext
Name: UserTransactionSessionFactory, Classname: $Proxy12
Name: queue, Classname: org.jnp.interfaces.NamingContext
Name: topic, Classname: org.jnp.interfaces.NamingContext

und für Sub-Kontext:

Context nc = (Context) ctx.lookup( "queue" );
for (NamingEnumeration e = nc.list(""); e.hasMore() 
  …

Ergebnis:

Name: A, Classname: org.jboss.mq.SpyQueue
Name: testQueue, Classname: org.jboss.mq.SpyQueue
Name: ex, Classname: org.jboss.mq.SpyQueue
Name: DLQ, Classname: org.jboss.mq.SpyQueue
Name: D, Classname: org.jboss.mq.SpyQueue
Name: C, Classname: org.jboss.mq.SpyQueue
Name: B, Classname: org.jboss.mq.SpyQueue


----------



## BigBoss (25. Apr 2007)

danke erstmal für deine Antwort.
Aber du hast die Frage etwas flasch verstanden.
Ich will nicht in einem Baum im Verzeichnissdienst nach irgendwlechen einträgen suchen, das hab ich schon drinn und ist kein problem. Ich möchte nach den Bäumen bzw nach den root contexten suchen also was als "dc" oder "o" bezeichnet wird und die Wurzel des ganzen bildet.

Gruß BB


----------



## MartinRuopp (26. Apr 2007)

http://www.java-forum.org/de/topic47981_jndi-verzeichnissb-ume-suchen.html

MartinRuopp

Das Problem erinnert so ein bisschen an das Problem von der Henne und dem Ei oder - um mehr mathematisch zu werden an die Russellsche Antinomie.
( siehe http://de.wikipedia.org/wiki/Russellsche_Antinomie )

JNDI ist ja bloß eine Ansammlung von Interfaces die auf einem - wie auch immer implementierten Baum - aufsetzen. Enweder gibt es einen Startkontext aller Startkontexte, dann müsste er auch auf sich selbst zeigen (und dann wäre der Baum kein Baum, weil er wieder auf den Startkontext zurückverweisen würde), oder es gibt ihn nicht, dann ist er auch kein Startkontext aller Startkontexte.

Neben allen Scherzen und mathematischen Spielereien ist es natürlich nicht bezweckt, alle Implementatione einer Interface-Fassade zu kennen, gerade darin liegt ja der Sinn einer Fassade aus Interface-Klassen: Programmierer können immer neue Implementationen des Interfaces erfinden.

Gruß,
Martin Ruopp

http://www.mruopp.de


----------



## BigBoss (26. Apr 2007)

jo dem ist wohl so. da beisst sich die katze in den schwanz.
aber es gibt mindestens bei novell die möglichkeit über slp die bäume abzufragen.
muss noch ein bissel suchen aber hab bis jetzt noch nix anständiges für slp gefunden.

Gruß BB


----------

