2009-06-09 8 views
34

Grails 1.x grails.config.locations निर्देश सेट करके बाहरी कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने की अनुमति देता है। क्या Datasource.groovy में डेटाबेस कॉन्फ़िगरेशन को बाहरी करने के लिए कोई समान दृष्टिकोण उपलब्ध है (जेएनडीआई स्थापित किए बिना)?बाहरी Grails डेटासॉर कॉन्फ़िगरेशन

यह डीबी प्रमाण-पत्रों को एप्लिकेशन के बाहर एक सरल विन्यास फाइल में कॉन्फ़िगर करने में सक्षम होने के लिए सहायक साबित होगा।

अग्रिम धन्यवाद!

उत्तर

50

आप datasource कॉन्फ़िगरेशन को बाहरी करने के तरीके के रूप में grails.config.locations में निर्दिष्ट गुण फ़ाइल का उपयोग कर सकते हैं।

:

.... 
    .... 
    production { 
    dataSource { 
     dbCreate = "update" 
     driverClassName = "com.myorg.jdbcDriverNotExists" 
     url = "" 
     username = "" 
     password = "" 
    } 
    } 
    .... 
    .... 

मैं एक बाहरी गुण मेरी Config.groovy में फ़ाइल निर्दिष्ट करें:

मेरी DataSource.groovy में मैं उत्पादन वातावरण के लिए यह निर्दिष्ट करें: नीचे कैसे मैं आम तौर पर एक Grails परियोजना स्थापित है

dataSource.driverClassName=oracle.jdbc.OracleDriver 
dataSource.url=jdbc:oracle:thin:@host:port:sid 
dataSource.username=sa 
dataSource.password=secret 
:
grails.config.locations = [ "classpath:app-config.properties"] 

गुण फ़ाइल (में grails एप्लिकेशन के अंतर्गत/conf/संग्रहीत) में मैं वास्तविक डेटा स्रोत की जानकारी निर्दिष्ट

मैं Config.groovy में मौजूद अन्य मानों को ओवरराइड करने के तरीके के रूप में गुण फ़ाइल का भी उपयोग करता हूं। जब ऐप तैनात किया जाता है, अगर मुझे डेटासोर्स जानकारी को संशोधित करना है, तो मैं बस /WEB-INF/classes/app-config.properties फ़ाइल को संपादित करता हूं और पुनरारंभ करता हूं।

+0

ऐसा लगता है कि मैं क्या कर रहा था! आपके स्पष्ट और संक्षिप्त उत्तर के लिए धन्यवाद, जॉन :) – miek

+10

यह एक अच्छा समाधान की तरह दिखता है, सिवाय इसके कि आपके पास अपग्रेड के बाद संपादन हो। कॉन्फ़िगरेशन को बाहरी करने के लिए http://blog.zmok.net/articles/2009/04/22/playing-with-grails-plication-configuration –

+0

जैसा कि ब्रैड ने बताया, यह युद्ध तैनात करने के लिए एक व्यवहार्य समाधान नहीं है । वह लिंक जो एक पोस्ट है वह एक बेहतर जवाब है। – Mike

24

उपर्युक्त उत्तर वास्तव में कॉन्फ़िगरेशन को बाहरी नहीं करता है। वह करीब है, लेकिन विन्यास अभी भी आवेदन में रह रहा है। मैं एप्लिकेशन के बाहर किसी स्थान को इंगित करने के लिए एप्लिकेशन/सर्वर के स्टार्टअप पर एक JVM वातावरण var का उपयोग करता हूं जहां बाहरी कॉन्फ़िगरेशन रहता है। Config.groovy फ़ाइल में वातावरण var पढ़ें और इसे बाहरी कॉन्फ़िगरेशन फ़ाइल प्राप्त करें। कुछ ऐसा:

def extConfig = System.properties.getProperty('ENVVAR'); 
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"] 
1

मेरे लिए यह काम नहीं करता है। एक पर्यावरण चर प्राप्त करने के लिए।

बेहतर उपयोग:

System.getenv().get("ENVVAR").toString() 
0

बस Config.groovy में निम्नलिखित फाइल

grails.config.locations = [ 
      "file:/yourDirectory/${appName}/${Environment.current.name}-datasource.properties", 
      "file:/yourDirectory/${appName}/${Environment.current.name}-config.groovy", 
      "classpath:${appName}-${Environment.current.name}-datasource.properties", 
      "classpath:${appName}-${Environment.current.name}-config.groovy" 
    ] 

के रूप में विन्यास फाइल स्थान रख दिया और अपने उचित में डेटा स्रोत और अन्य config मूल्यों के बारे में सभी विवरण डाल फ़ाइल। इसलिए आप कॉन्फ़िगरेशन को बाहरी कर सकते हैं और मानों को बदलने के लिए पुनरारंभ करने की आवश्यकता नहीं है।