मेरे पास स्प्रिंग के साथ बनाया गया एक वेब एप्लिकेशन है। यह JDBC का उपयोग करके एक डेटाबेस से जुड़ता है और JDBC गुण (URL, उपयोगकर्ता नाम, पासवर्ड, और इसी तरह) सभी वर्तमान में हार्ड-कोडेड हैं।

वेब ऐप को WAR फ़ाइल के रूप में तैनात किया गया है और यह टॉमकैट 8.5 . पर चलता है

मैं इन गुणों को एक myapp.properties फ़ाइल में स्थानांतरित करना चाहता हूं जो तैनात WAR फ़ाइल के बाहर है, जहां उपयोगकर्ता उन गुणों को अपने डेटाबेस पर इंगित करने के लिए ट्विक कर सकता है।

एप्लिकेशन स्टार्टअप पर, यदि वेब ऐप फ़ाइल नहीं ढूंढ सकता है, तो भी मैं चाहता हूं कि एप्लिकेशन शुरू हो और एक दोस्ताना प्रदर्शित हो "क्षमा करें, मैं डेटाबेस से कनेक्ट नहीं कर सकता क्योंकि गुण फ़ाइल गुम है" संदेश (केवल वेब होने के बजाय) ऐप चलाने में विफल)।

मैंने myapp.properties को टॉमकैट कॉन्फ डायरेक्टरी (उदा: /bin/apache-tomcat-8.5.53/conf/myapp.properties) में डालने के बारे में सोचा और हमेशा इसे वहीं से लोड किया, लेकिन मुझे नहीं पता कि प्रोग्रामेटिक रूप से कैसे करें tomcat conf फ़ोल्डर का वह स्थान निर्धारित करें।

मुझे इस पर कैसे पहुंचना चाहिए इस पर कोई विचार?

0
user13156160 16 अप्रैल 2020, 20:02

1 उत्तर

सबसे बढ़िया उत्तर

मुझे एक समाधान मिला जो मेरे लिए काम करता है। मैं टॉमकैट के स्थान को प्रोग्रामेटिक रूप से निर्धारित करने के लिए 'कैटालिना.होम' पर्यावरण चर को पढ़ने में सक्षम था।

फिर मैं अपनी गुण फ़ाइल को tomcat/conf निर्देशिका से लोड करता हूं।

नीचे पूरा कोड, अच्छा काम करता प्रतीत होता है।

String catalinaHome = System.getProperties().getProperty("catalina.home");
String myappPropertiesFile = catalinaHome + File.separator + "conf" + File.separator + "myapp.properties";

Properties props = new Properties();
props.load(new FileInputStream(myappPropertiesFile));

String jdbcDriver = props.getProperty("jdbcDriver");
String jdbcUrl = props.getProperty("jdbcUrl");
0
user13156160user13156160 16 अप्रैल 2020, 19:02