2009-05-18 8 views
6

मेरे पास मेरे वेब/मेटा-इंफ/फ़ोल्डर में डेटाबेस कनेक्शन (पूल) विवरण वाले context.xml है। अब मैं अपने आवेदन के लिए कुछ विवरण फ़ाइल और context.xml में अंतिम उपयोगकर्ता द्वारा डेटाबेस फ़ाइल को सीधे फ़ाइल में हार्ड कोइंग के बजाय गुण फ़ाइल से डीबी कनेक्शन जानकारी पढ़ने के लिए प्रदान करना चाहता हूं।कुछ गुणों से टॉमकैट में वेब/मेटा-इंफ/Context.xml पढ़ सकते हैं

क्या प्लेमैटर्स को कुछ गुण फ़ाइल से प्रतिस्थापित करने के लिए टोमकैट संभव है?

मैं संदर्भ प्रबंधक के बारे में पढ़ता हूं लेकिन यह सुनिश्चित नहीं करता कि उसे कहां रखा जाए।

कृपया अपना इनपुट प्रदान करें।

धन्यवाद अभिषेक

उत्तर

0

Context.xml को JNDI संसाधनों को जोड़ने से पर्याप्त नहीं है। आपको WEB-INF/web.xml में भी उनके उपयोग को परिभाषित करने की आवश्यकता होगी। चरण-दर-चरण के लिए this देखें।

+0

ठीक है कि यह ठीक है और यह मेरे सिस्टम में काम कर रहा है लेकिन समस्या यह है कि मैं अपने context.xml को एक गुण फ़ाइल से डेटाबेस विवरण पढ़ने के लिए चाहता हूं यानी उपयोगकर्ता लिखने की बजाय = "sa" मैं उपयोगकर्ता = "$ { उपयोगकर्ता नाम} "और उपयोगकर्ता नाम मान को गुण फ़ाइल में परिभाषित किया जाएगा। –

+0

@ अभिषेक एक गुण फ़ाइल से फ़िल्टर करने के लिए चींटी या मेवेन का उपयोग करें। मुझे नहीं लगता कि टोमकैट में कोई फ़िल्टरिंग क्षमता है। – sal

0

जैसा कि मैं इसे समझता हूं, आपका लक्ष्य सिस्टम प्रशासक को सिस्टम को कॉन्फ़िगर करने की अनुमति देने के लिए आपके .war के बाहर एप्लिकेशन कॉन्फ़िगरेशन होना है।

इसे प्राप्त करने का एक तरीका है .war फ़ाइल में context.xml को नहीं रखना है, बल्कि उस फ़ाइल को अपने .war के साथ वितरित करना है। इस फ़ाइल को तब CATALINA_HOME/conf/Catalina/HOSTNAME/APPLICATIONPATH.xml (उदा। CATALINA_HOME/conf/Catalina/localhost/myapp.xml) में रखा जाना है। इस प्रकार, डेटाबेस कनेक्शन जानकारी को .war फ़ाइल को बदले बिना बाहरी संदर्भ कॉन्फ़िगरेशन फ़ाइल में सीधे संपादित किया जा सकता है, आपको उस परिदृश्य में प्लेसहोल्डर्स की आवश्यकता नहीं होगी। यह उपयोगकर्ता के लिए सबसे आसान तरीका नहीं है क्योंकि उसे एक XML फ़ाइल को संपादित करना है, लेकिन यह अधिकांश सिस्टम प्रशासकों के लिए व्यवहार्य होना चाहिए ...

आप tomcat.apache पर tomcat संदर्भ कॉन्फ़िगरेशन पर अधिक जानकारी प्राप्त कर सकते हैं .org/tomcat-5.5-doc/config/context.html

0

मुझे यकीन नहीं है कि गुण फ़ाइल से विवरण लोड करना संभव है लेकिन आप संदर्भ के बजाय केंद्रीय server.xml फ़ाइल में विवरण प्राप्त कर सकते हैं। एक्सएमएल। एक बार जब आप इसे प्राप्त कर लेंगे, तो आप मानक XML इकाई संदर्भ का उपयोग कर कनेक्शन विवरण को बाहरी रूप से बाहरी कर सकते हैं।

context.xml में अपना डेटाबेस कनेक्शन विवरण डालने के बजाय, उन्हें एक अनुभाग के तहत server.xml में डालें, और उसके बाद संदर्भ.एक्सएमएल में एक संसाधन लिंक तत्व जोड़ें जो वैश्विक डेटा स्रोत और आपके बीच एक लिंक बनाता है संदर्भ।

दुर्भाग्यवश दस्तावेज जो आप प्राप्त करने की कोशिश कर रहे हैं उसके लिए काफी कमजोर है। (नीचे आधा रास्ता के बारे में) इस पेज के "संसाधन परिभाषा" अनुभाग पर निर्देशों का पालन करें, और यह नीचे (छोटे) ResourceLink खंड पर विशेष ध्यान दें:

http://tomcat.apache.org/tomcat-5.5-doc/config/globalresources.html

0

अगर मैं नहीं है निर्माण समय पर डेटाबेस कनेक्शन जानकारी, मैं केवल संसाधन संदर्भ कॉन्फ़िगर करूँगा और व्यवस्थापक को बताऊंगा कि कनेक्शन कनेक्शन देने के लिए उन्हें किस नाम की आवश्यकता है। वे टॉमकैट एडमिन कंसोल में सबकुछ कॉन्फ़िगर कर सकते हैं और मुझे इसके बारे में कभी भी पता नहीं होना चाहिए। यह एक एकल WAR फ़ाइल बनाने और इसे कई वातावरण में उपयोग करना आसान बनाता है क्योंकि डेटाबेस कॉन्फ़िगरेशन विवरण WAR का हिस्सा नहीं हैं।

यह भी देखें: Apache Tomcat 6.0 JNDI Resources

आप का निर्माण समय में विवरण पता है और उन्हें युद्ध में बेक चाहते हैं, Ant filters प्रयास करें।

+0

मेरी राय में, इस तरह तैनाती को स्वचालित करना मुश्किल है क्योंकि मानव को व्यवस्थापक कंसोल तक पहुंचना पड़ता है। –

+0

@ GuidoGarcía केवल एक बार होने की जरूरत है। सर्वर पर डेटा स्रोत परिभाषित करने के बाद आप तैनाती को स्वचालित रूप से स्वचालित कर सकते हैं। आप डेटा स्रोत निर्माण को स्वचालित भी कर सकते हैं, लेकिन मैंने इसे स्वयं नहीं किया है क्योंकि यह अक्सर नहीं होता है। –

1

आप इसे बेहतर तरीके से कर सकते हैं। हमारे मामले में हमारे पास विभिन्न प्रोफाइल, जैसे देव, यूएटी, प्री-प्रोड, सपोर्ट इत्यादि के लिए अलग-अलग डेटाबेस थे।

तो मैंने जो किया, मैंने अपना context.xml अपने डिफ़ॉल्ट स्थान <TOMCAT_HOME>/conf में रखा।

context.xml के संसाधन config में निम्नलिखित था:

<Resource name="jdbc/someDS" 
      auth="Container" 
      type="javax.sql.DataSource" 
      driverClassName="oracle.jdbc.OracleDriver" 
      url="${appName.db.url}" 
      username="${appName.db.user}" 
      password="${appName.db.password}" 
      maxActive="30" 
      maxIdle="10" 
      defaultAutoCommit="true" 
      maxWait="-1"/> 

मैं तीन बिल्ला सर्वर बनाया - सर्वर-देव, सर्वर-UAT, सर्वर-समर्थन और में प्रत्येक डेटाबेस के लिए संबंधित मानों पारित कर दिया ग्रहण/IntelliJ का बिल्ला सर्वर config में बिल्ला के वीएम तर्क (नीचे दिखाया गया) की तरह:

-DappName.db.url=jdbc:oracle:thin:@<DB_SERVER>:1521:<SID> -DappName.db.user=DB_USER -appName.db.password=DB_PASSWORD 

लाभ, डेवलपर्स तो डेटाबेस हर समय बदलने की जरूरत नहीं है, वे सिर्फ एक शुरू करने की आवश्यकता विशेष सर्वर यह बहुत आसान था और हमारे विकास के दौरान बहुत समय बचाया।

+2

क्या आप jvm का उपयोग किए बिना गुण फ़ाइल का उपयोग कर ऐसा कर सकते हैं। मेरे पास 'TOMCAT_HOME/conf' में context.xml में jndi लुकअप भी है। मैं सोच रहा था कि क्या मैं चर का उपयोग कर सकता हूं और गुण फ़ाइल से पढ़ सकता हूं? –

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