jndi

2011-03-11 12 views
5

का उपयोग करके ldap निर्देशिका के सभी ऑब्जेक्टक्लास विवरण को कैसे दिखाएं मैं एलडीएपी निर्देशिका की स्कीमा में मौजूद सभी ऑब्जेक्ट क्लास दिखाना चाहता हूं ताकि उपयोगकर्ता को नई प्रविष्टि जोड़ने के लिए उपलब्ध ऑब्जेक्टक्लास इनपुट करने में मदद मिल सके।jndi

DirContext schema = ctx.getSchema(""); 
Attributes answer = schema.getAttributes("ClassDefinition/person"); 

लेकिन यह केवल व्यक्ति के बारे में जानकारी दिखाता है।

उत्तर

3

आप subschema subentry क्वेरी करने के लिए है यानी cn = स्कीमा (नीचे दिए गए कोड अपाचे निर्देशिका सर्वर के खिलाफ परीक्षण किया गया है)

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

जब आप को हार्डकोड cn = स्कीमा सावधान रहना होगा, इस कार्यान्वयन विशिष्ट है बाइंडिंग उपलब्ध करा सकता है। नोट करने के लिए एक और मामूली बात यह है कि फिल्टर objectclass = subschema होना चाहिए, लेकिन इससे कोई फर्क नहीं पड़ता। – kalyan

+0

आपको बहुत बहुत धन्यवाद। वह कोड बस ठीक काम किया। – pankaj

+3

नोप, सीएन = स्कीमा स्कीमा स्थान – 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()); 
} 

आप

  • AttributeDefinition
  • जैसे अन्य विभिन्न बाइंडिंग का उपयोग कर सकते हैं
  • कक्षा परिभाषा
  • सिंटेक्सडिफिनिशन

स्कीमा संदर्भ भी तरह
  • MatchingRule
  • ExtensionDefinition
  • ControlDefinition
  • SASLDefinition

+0

जावा 1.5 और उसके बाद में कलाकारों की आवश्यकता नहीं है। –

+0

@ रोबिनग्रीन, बाध्यकारी बेकार है यदि वह जेनिक्स 'नामकरण एनीमेशन ' का उपयोग करता है, लेकिन यह ऊपर दिए गए उदाहरण में उपयोगी है। –

संबंधित मुद्दे