2011-03-11 6 views

Respuesta

3

Usted tiene que consultar la sub-entrada subesquema es decir, cn = esquema (el código de abajo ha sido probado contra un Apache Directory Server)

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

Hay que tener cuidado cuando se hardcode CN = esquema, esto es específico de la implementación. Otro punto menor a tener en cuenta es que el filtro debe ser objectclass = subschema, pero no importa. – kalyan

+0

muchas gracias. ese código funcionó bien. – pankaj

+3

nope, cn = schema es el valor estándar de LDAP V3 que especifica la ubicación del esquema – 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()); 
} 

Puede utilizar varios otros enlaces como

  • AttributeDefinition
  • ClassDefinition
  • SintaxisDefinición

contexto de esquema también puede proporcionar fijaciones como
  • MatchingRule
  • ExtensionDefinition
  • ControlDefinition
  • SASLDefinition

+0

El molde no es necesario en Java 1.5 y superior. –

+0

@RobinGreen, el enlace es inútil si usa los genéricos 'NamingEnumeration ', pero es útil en el ejemplo anterior. –

Cuestiones relacionadas