2010-02-23 12 views
6

में आम JNDI संसाधनों मैं बिलाव में सर्वलेट अनुप्रयोगों की एक जोड़ी (5.5) चल रहा हूँ। सभी सर्वलेट्स एक सामान्य फैक्ट्री संसाधन का उपयोग करते हैं जिसे जेएनडीआई का उपयोग करके साझा किया जाता है। फिलहाल, मैं /conf/server.xml फ़ाइल में ग्लोबल नामकरण संसाधन के रूप में फैक्ट्री संसाधन को शामिल करके सब कुछ प्राप्त कर सकता हूं, और फिर प्रत्येक सर्वलेट की मेटा-आईएनएफ/context.xml फ़ाइल में संसाधन के लिए संसाधन लिंक शामिल है। एक्सएमएल फाइलों से स्निपेट नीचे शामिल हैं। नोट: मैं टॉमकैट से परिचित नहीं हूं, इसलिए मैं यह नहीं कह रहा हूं कि यह एक अच्छी कॉन्फ़िगरेशन है !!!बिलाव

हालांकि, मैं अब एक से अधिक बिल्ला उदाहरणों में इन सर्वलेट्स स्वचालित रूप से एक RPM का उपयोग कर स्थापित सक्षम होना चाहते हैं। आरपीएम पहली बार WARs को वेबएप निर्देशिका में कॉपी करेगा, और कारखाने के लिए जार सामान्य/lib निर्देशिका (जो ठीक है) में होगा। लेकिन यह सुनिश्चित करने की भी आवश्यकता होगी कि कारखाने संसाधन को सभी सर्वलेट्स के लिए संसाधन के रूप में शामिल किया गया हो।

सबसे अच्छा तरीका है विश्व स्तर पर संसाधन जोड़ने क्या है? मैं एक स्क्रिप्ट लिखने के लिए उत्सुक नहीं हूं जो server.xml फ़ाइल में जाता है और इस तरह संसाधन में जोड़ता है। क्या मेरे लिए एकाधिक server.xml फ़ाइलों में जोड़ने का कोई तरीका है ताकि मैं एक नई सर्वर-app.xml फ़ाइल लिख सकूं और यह मेरी सेटिंग्स को server.xml पर जोड़ देगा? या, सर्वर.एक्सएमएल का उपयोग किए बिना सभी जेडटीआई संसाधनों को सभी सर्वलेट्स में जोड़ने के लिए अभी भी बेहतर है?

पेज। सर्वर को पुनरारंभ करना कोई समस्या नहीं होगी, इसलिए यदि कोई परिवर्तन स्वचालित रूप से नहीं उठाया जाता है तो मुझे कोई फर्क नहीं पड़ता।

धन्यवाद

स्निपेट server.xml से

<!-- Global JNDI resources --> 
    <GlobalNamingResources> 

    <Resource name="bean/MyFactory" 
       auth="Container" 
       type="com.somewhere.Connection" 
       factory="com.somewhere.MyFactory"/> 
    </GlobalNamingResources> 

पूरे सर्वलेट का META-INF/context.xml फ़ाइल

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <ResourceLink global="bean/MyFactory" 
       name="bean/MyFactory" 
       type="com.somewhere.MyFactory"/> 
    </Context> 
+0

फैक्ट्री संसाधन क्या करता है? मेरे पास एक समान स्थिति है जिसे मैं हल करने की कोशिश कर रहा हूं लेकिन यह सुनिश्चित नहीं करता कि कैसे। उदाहरण के लिए, क्या ऑब्जेक्ट का केवल एक उदाहरण बनाना संभव है? Http://stackoverflow.com/questions/9453109/using-jndi-to-share-servlet-session-objects-and-data-in-tomcat – ziggy

उत्तर

1

टॉमकैट 4 के बाद से, सिफारिश को server.xml फ़ाइल में कोई जेएनडीआई जानकारी नहीं डालना है। की जाँच करें:

बिलाव 5 के लिए, बिलाव 4.x के विपरीत, यह नहीं server.xml फ़ाइल में सीधे तत्वों जगह की सिफारिश की है। ऐसा इसलिए है क्योंकि यह संदर्भ कॉन्फ़िगरेशन को संशोधित करता है क्योंकि मुख्य conf/server.xml फ़ाइल को टॉमकैट को पुनरारंभ किए बिना पुनः लोड किया जा सकता है।

मुझे पता है कि आप इस पर ध्यान न देने का दावा करते हैं, लेकिन मेरा विश्वास करो, आपकी तैनाती टीम करता है, और रखरखाव टीम बाद में आपको धन्यवाद देगी। यहां तक ​​कि यदि इसका मतलब है कि आप स्वयं को धन्यवाद देते हैं।

यदि आपको सर्वर पर सभी वेबैप के बीच साझा करने के लिए एक जेएनडीआई सेटिंग की आवश्यकता है, तो आपको इसे $ CATALINA_HOME/conf/context.xml फ़ाइल में रखना चाहिए। सभी संभावनाओं में, उस स्थान पर पहले से मौजूद एक मौजूदा संदर्भ.एक्सएमएल होगा, लेकिन आप अपने संसाधन नोड्स को अपनी पसंदीदा भाषा के माध्यम से जोड़ने के लिए एक सरल ऐप लिखने में सक्षम होना चाहिए और जो भी डोम बिल्डर इसके साथ बंडल हो जाता है। या, यदि आप कमांड लाइन के साथ रहना चाहते हैं, तो this article देखें, जो आपकी मदद करने के लिए कुछ एक्सएमएल-प्रोसेसिंग शैल स्क्रिप्ट देता है।

शुभकामनाएं!

+4

आपको 'server.xml' में सभी ऐप्स द्वारा साझा की जाने वाली चीज़ों को रखना होगा, ऐसा करने का कोई और तरीका नहीं है, और ओपी यही कर रहा है कि उन्होंने 'संसाधन संसाधन />' –

0

यह सीधे आपके प्रश्न का उत्तर नहीं है, लेकिन है आप के बजाय बजाय server.xml में की, अपने context.xml फाइल के अंदर अपने सभी config डाल माना? यह आपके वेब-ऐप को पूरी तरह आत्मनिर्भर बनाता है, जो आपकी तैनाती आवश्यकताओं के लिए महत्वपूर्ण लगता है।

मैं जहाँ तक यह किसी भी रिफैक्टरिंग आपकी ऐप्लिकेशन सुनिश्चित करने के लिए पूरी तरह से आत्म निहित इस वर्तमान में नहीं किया जा सकता है, तो हो सकता है आवश्यक पर विचार के लायक हो सकता है कहने के लिए जाना चाहते हैं।

परियोजनाओं पर काम करने के दौरान जहां मैंने तैनात/आम/lib JARs और सामान्य संसाधनों को तैनात किया, और उन्हें भ्रमित और सूक्ष्म तरीकों से काट दिया गया (मुझे अंत में पता चला कि ये हमेशा मेरी खुद की गलती बीटीडब्ल्यू थीं, यहां टॉमकैट को दोष नहीं दे रहा था), मैं अब मेरे वेबपैस के लिए पूरी तरह से सुरक्षात्मक दृष्टिकोण का पक्ष लें: पूरी तरह से स्वतंत्र रहें।

लेकिन निश्चित रूप से मैं पूरी तरह से अपनी परिस्थितियों, बस कुछ सुझाव पता नहीं है।

+2

देखें कि आपको उन चीज़ों को रखना होगा जो 'सर्वर' में सभी ऐप्स द्वारा साझा किए गए हैं .xml' ऐसा करने का कोई दूसरा तरीका नहीं है, और ओपी यही कर रहा है कि उन्होंने 'संसाधन संसाधन />' –

+0

सही का उल्लेख किया है, लेकिन यदि आप फिर से मेरा जवाब पढ़ते हैं तो आप देखेंगे कि मैं ओपी शायद उस पर पुनर्विचार करें कि उसकी तैनाती आवश्यकताओं को पूरा किया गया है। मैंने पाया है कि साझा करने वाले घटक समस्याएं पैदा कर सकते हैं जो पूरी तरह स्व-निहित ऐप्स पीड़ित नहीं हैं। – Brian

+2

Somethings को इस तरह से ऐप्स के बीच साझा किया जाना चाहिए, उदाहरण के लिए एंबेडेड डर्बी डेटाबेस साझा करने का एकमात्र तरीका इसे 'server.xml' में रखना है और फिर' JNDI' 'को' संसाधन संसाधन /> 'के माध्यम से संदर्भित करना है। ऐसा करने का कोई दूसरा तरीका नहीं है और इन प्रकार की चीजों के लिए कोई अन्य विचार नहीं है जो केवल प्रति जेवीएम प्रकार संसाधनों में से एक हो सकता है। –

0

यह मैं क्या करना होगा, मैं Maven 3 उपयोग कर रहा हूँ, मैं अपने resources निर्देशिका में server.xml रखा या कुछ अन्य निर्देशिका मैं पर एक filter चलाने के लिए और गतिशील रूप से बदल सकते हैं और एक उपयुक्त server.xml उत्पन्न जब मैं एक पैकेज कर सकते हैं। फिर आप मेवेन-आरपीएम-प्लगइन का उपयोग कर सकते हैं और आरपीएम पीढ़ी को भी स्वचालित कर सकते हैं।

1

असल में हमारे पास ऐसा कोई मामला है जहां हम युद्ध में जेडीबीसी कॉन्फ़िगरेशन (उदाहरण के लिए) नहीं डाल सकते हैं: ग्राहक हमें कभी भी उत्पादन सर्वर के लिए उपयोगकर्ता नाम और पासवर्ड नहीं बताएगा, इसलिए हमें वैश्विक सर्वर कॉन्फ़िगरेशन में डेटास्रोत को परिभाषित करना था और ऐप के context.xml में एक लिंक डालें, जैसे सेशन ने किया था। वैश्विक कॉन्फ़िगरेशन या तो server.xml या tomcat के context.xml में रखा जा सकता है (ऐसा लगता है कि दूसरा दृष्टिकोण विंडोज प्लेटफॉर्म पर एक प्रीफ़्रेंड है)।

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

  • कोई संबंधित समस्या नहीं^_^