2008-12-02 14 views
5

मुझे अपने जावा ईई कंटेनर के जेएनडीआई पेड़ में एलडीएपी संदर्भ स्रोत डालना होगा ताकि इसे कंटेनर के अंदर अनुप्रयोगों द्वारा उपयोग किया जा सके।मैं जावा ईई कंटेनर में एलडीएपी कनेक्शन पूल कैसे स्थापित कर सकता हूं?

मैं ओरेकल ओवीडी के खिलाफ प्रश्न करने के लिए स्प्रिंग-एलडीएपी का उपयोग कर रहा हूं। विकास के लिए, मैंने बस स्प्रिंग एक्सएमएल कॉन्फ़िगरेशन फ़ाइल में संदर्भ स्रोत स्थापित किया है। उत्पादन के लिए, हालांकि, मुझे कंटेनर से कनेक्शन/संदर्भ को पकड़ने के लिए जेएनडीआई लुकअप का उपयोग करने में सक्षम होना चाहिए (जैसा कि यहां बताया गया है: http://forum.springframework.org/showthread.php?t=35122&highlight=jndi)। मुझे उत्पादन ओवीडी इंस्टेंस के लिए यूआरएल/उपयोगकर्ता नाम/पीडब्ल्यूडी तक पहुंच की अनुमति नहीं है, इसलिए ऐसा लगता है कि इसे jndi.properties फ़ाइल में डालने से इंकार कर दिया जाता है।

आदर्श रूप में, मैं कनेक्शन का पूल (जैसे जेडीबीसी) चाहता हूं, क्योंकि मेरे आवेदन में एक ही समय में कई एलडीएपी प्रश्न निष्पादित हो सकते हैं। किसी जेएनडीआई लुकअप से ऑब्जेक्ट को पकड़ना और इसे मेरे SimpleLdapTemplate में इंजेक्शन करना बहुत सरल लगता है, लेकिन मुझे नुकसान है कि कनेक्शन/संदर्भ/पूल को जेएनडीआई पेड़ में कैसे प्राप्त किया जाए। क्या मुझे इसे बनाने और इसे आरएआर में पैकेज करने की आवश्यकता होगी? यदि हां, तो ऑपरेशन टीम यूआरएल/उपयोगकर्ता नाम/पीडब्ल्यूडी को इस तरह से निर्दिष्ट करने के लिए कुछ विकल्प क्या हैं कि वे डेवलपर्स के लिए उपलब्ध नहीं हैं?

मैं जो विशिष्ट कंटेनर उपयोग कर रहा हूं वह ओएएस/ओसी 4 जे है, हालांकि मैं अन्य कंटेनरों पर भी काम करने वाली रणनीतियों का स्वागत करता हूं।

उत्तर

7

विशेष रूप से एलडीएपी कनेक्शन के वास्तविक पूलिंग के संदर्भ में, यदि आप जेएनडीआई एलडीएपी प्रदाता में निर्मित का उपयोग कर रहे हैं, तो कनेक्शन जेडीबीसी डेटा स्रोतों के समान सेमेन्टिक्स का उपयोग कर पहले से ही पूल किए जाते हैं जहां अलग-अलग एलडीएपी यूआरएल और सुरक्षा गुणों के लिए अलग-अलग पूल बनाए जाते हैं ।

एक JNDI DirContext बनाते समय, कॉन्फ़िगर संपत्ति com.sun.jndi.ldap.connect.pool सच होने के लिए और पूलिंग सक्षम हो जाएगा।

एलडीएपी पूलिंग here पर अधिक जानकारी है।

एलडीएपी पूलिंग को कॉन्फ़िगर करने पर विवरण here हैं।

0

कोई भी मौका आप एलडीएपी का एक dev संस्करण स्थापित कर सकते हैं और इसका उपयोग कर सकते हैं? फिर आप एक jndi.properties फ़ाइल का उपयोग कर सकते हैं, जो पर्यावरण विशिष्ट होगा, लेकिन आपके सिस्टम के लिए अज्ञेयवादी होगा।

संपादित करें: यहां अंतर यह है कि जब आप अपना ऐप बनाते हैं, तो आपका व्यवस्थापक इसे उत्पादन प्रणाली पर तैनात कर सकता है, जिससे मूल्यवान एलडीएपी पासवर्ड की सुरक्षा हो जाती है क्योंकि यह केवल उत्पादन बॉक्स पर गुण फ़ाइल में मौजूद है।

1

थोड़ा उलझन में, लेकिन शायद आपका sysadmin आपके डेटाबेस में उपयोगकर्ता नाम/पासवर्ड स्टोर कर सकता है, या तो एन्क्रिप्टेड, या सीमित पहुंच अधिकार वाली तालिका पर?

कुछ की तरह (छद्म सेम)

<bean id="ldapCredentialsProvider" 
    class="com.acme.YourCredentialsProvider" 
    init-method="readCredentials"> 
    <property name="dataSource" ref="yourDataSource"/> 
</bean> 

<bean id="username" 
    factory-bean="ldapCredentialsProvider" 
    factory-method="getUsername"/> 

<bean id="password" 
    factory-bean="ldapCredentialsProvider" 
    factory-method="getPassword"/> 

संपादित करें:

और देव में, अपने ldapCredentialProvider सेम एक साधारण गुण-फ़ाइल-आधारित कार्यान्वयन हो सकता है?

0

जेबॉस के साथ, आप बाहरी जेएनडीआई संदर्भ जेबॉस सर्वर जेएनडीआई नेमस्पेस में संघीय कर सकते हैं। आपको बस एमबीएएन कॉन्फ़िगरेशन फ़ाइल में एलडीएपी एक्सेस का वर्णन करना है। आप कैशिंग भी सक्षम कर सकते हैं।

हम एक एटीव निर्देशिका सर्वर तक पहुंचने के लिए इस समाधान का उपयोग कर रहे हैं।

http://www.jboss.org/community/docs/DOC-9726