jndi

2011-03-11 13 views
5

kullanarak ldap dizininin tüm objectclasses açıklamasını gösterme Yeni giriş eklemek için kullanıcının kullanılabilir nesne sınıflarını girmesine yardımcı olmak için LDAP Dizini şemasında bulunan tüm nesne sınıflarını göstermek istiyorum. Ancak bu yalnızca kişi hakkında bilgi gösterir.jndi

cevap

3

Sen subschema alt girişi sorgulamak zorunda yani cn = şema (Aşağıdaki kod Apache Directory Server karşı test edilmiştir)

DirContext ctx = new InitialLdapContext(env, null); 

SearchControls searchControls = new SearchControls(); 
searchControls.setSearchScope(SearchControls.OBJECT_SCOPE); 
searchControls.setReturningAttributes(new String[] 
    { "objectClasses" }); 
NamingEnumeration<SearchResult> results = ctx.search("cn=schema", "(ObjectClass=*)", searchControls); 

SearchResult result = results.next(); 
Attributes entry = result.getAttributes(); 

Attribute objectClasses = entry.get("objectClasses"); 
System.out.println(objectClasses); 
+0

olduğunu

  • ControlDefinition gibi bağlamaları sağlayabilir. Dikkat edilmesi gereken diğer bir nokta ise, filtrenin objectclass = subschema olması gerektiğidir, ancak önemi yoktur. – kalyan

  • +0

    çok teşekkür ederim. Bu kod sadece iyi çalıştı. – pankaj

    +3

    nope, cn = schema şema konumunu belirten LDAP V3 standart değeridir – kayyagari

    4
    DirContext schema=dcx.getSchema(""); 
    NamingEnumeration bindings = schema.listBindings("ClassDefinition"); 
    while (bindings.hasMore()) 
    { 
        Binding bd = (Binding)bindings.next(); 
        System.out.println(bd.getName() + ": " + bd.getObject()); 
    } 
    

    Sen

    • AttributeDefinition
    • gibi çeşitli diğer bağlantıları da kullanabilirsiniz
    • ClassDefinition
    • SyntaxDefinition

    Şema bağlamı da
    • MatchingRule
    • ExtensionDefinition, bu özel uygulama
    • SASLDefinition Sen cn = şema hardcode dikkatli olmak zorunda

    +0

    Java 1.5 ve üstü sürümlerde döküm gerekmez. –

    +0

    @RobinGreen, 'NamingEnumeration 'jeneriklerini kullanırsa, buradaki bağlamanın yararı yoktur, ancak yukarıdaki örnekte kullanışlıdır. –