Grails 1.x允許通過設置grails.config.locations指令來使用外部配置文件。是否有類似的方法可用於Datasource.groovy中的數據庫配置的外部化(無需設置JNDI)?外部化Grails數據源配置
如果能夠在應用程序之外的簡單配置文件中配置數據庫證書,這將會很有幫助。
在此先感謝!
Grails 1.x允許通過設置grails.config.locations指令來使用外部配置文件。是否有類似的方法可用於Datasource.groovy中的數據庫配置的外部化(無需設置JNDI)?外部化Grails數據源配置
如果能夠在應用程序之外的簡單配置文件中配置數據庫證書,這將會很有幫助。
在此先感謝!
您可以使用grails.config.locations中指定的屬性文件作爲外部化數據源配置的一種方法。下面是我通常如何建立一個Grails項目:
在我DataSource.groovy中我指定此生產環境:
....
....
production {
dataSource {
dbCreate = "update"
driverClassName = "com.myorg.jdbcDriverNotExists"
url = ""
username = ""
password = ""
}
}
....
....
我指定一個外部屬性文件在我的Config.groovy:
grails.config.locations = [ "classpath:app-config.properties"]
屬性文件中(存儲在的grails-app/conf目錄/)我指定的實際數據源信息:
dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=jdbc:oracle:thin:@host:port:sid
dataSource.username=sa
dataSource.password=secret
我也使用屬性文件作爲覆蓋Config.groovy中其他值的方法。部署應用程序時,如果必須修改數據源信息,則只需編輯/WEB-INF/classes/app-config.properties文件並重新啓動即可。
上面的答案並不真正使配置具體化。他很近,但配置仍在應用程序中。 我將在啓動應用程序/服務器時使用JVM環境var,以指向外部配置所在應用程序之外的位置。讀取config.groovy文件中的environment var並使用它獲取外部配置文件。這樣的事情:
def extConfig = System.properties.getProperty('ENVVAR');
grails.config.locations = [ "file:${extConfig}/${appName}-config.groovy"]
對我來說這是行不通的。獲取環境變量。
更好地利用:
System.getenv().get("ENVVAR").toString()
只要把配置文件位置在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"
]
,並把所有有關的數據源和其他配置值的細節在適當的文件。因此,您可以將配置外部化,無需重新啓動即可更改值。
這看起來就像我以後一樣!感謝您清晰簡潔的回答,約翰:) – miek 2009-06-10 07:11:26