Frage

Mit LdapTemplate im Frühjahr LDAP, ich habe diesen Code:

Object object=null;
try{
    String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
    object = this.ldapTemplate.lookup(dn);
} catch(final NameNotFoundException e){
    // create Object
}

Da aber ich habe mein Joshua Bloch ich, dass Ausnahmen wissen lesen sollten nicht für die Ablaufsteuerung verwendet werden. Gibt es eine Möglichkeit, eine dn zu sehen, um zu sehen, ob es ohne Auslösen einer Ausnahme liegt vor, wenn dies nicht der Fall? Es muss sein, aber ich kann es nicht finden. Ich suche nach Code, das funktioniert wie folgt (oder ähnlich):

String dn = "cn=readers,ou=groups,dc=mycompany, dc=com";
Object object=this.ldapTemplate.someMethod(dn);
if(object==null){
    // create Object
}

Kann jemand helfen?

BTW: einfach nur an der JavaDoc wird nicht helfen. Keine der Methoden, die throw NameNotFoundException sagen so in den JavaDocs.

War es hilfreich?

Lösung

Die lookup() Methode sollte nur dann verwendet werden, wenn Sie sicher wissen, dass der DN existiert. Dies ist in der Regel, weil Sie gesucht haben und fanden einen Benutzer oder eine Gruppe zuvor, und im Cache die DN vom Server zurückgegeben.

Wenn Sie etwas suchen, das könnte oder nicht sein könnte, die richtige API zu verwenden ist ldapTemplate.search(), mit einem geeigneten Filter. Dies gibt eine Liste von Ergebnissen, und in dem Fall, wenn keine Ergebnisse gefunden werden, wird eine leere Liste zurück, anstatt eine Ausnahme zu werfen.

Andere Tipps

Eigentlich Frühling zwingen Sie hier, um die Verwendung Ausnahmen für die Ablaufsteuerung (das heißt, es ist nicht deine Schuld, es ist ihre Entscheidung).

arbeitete ich mit LdapTemplate paar Monaten und ich konnte nichts besseres finden dann diese Ausnahme zu fangen und zu bewerten, um diese Situation als „Benutzer nicht gefunden“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top