2010-10-26 60 views
1

我正在開發的grails應用程序可以針對MySQL或SQL Server運行。我想在application.properties文件中添加一個新的屬性說
database.type = MySQL的//或者它可能是SQLSERVERGrails 1.3.5:如何配置Datasource.groovy以連接到MySQL或SQL Server

我如何獲得這個屬性在DataSource.groovy中,這樣,如果是我的MySQL連接MySQL服務器還是SQLSERVER我連接到SQL Server?

這是正確的方法嗎?我該怎麼做?

編輯:在閱讀和搜索選項後,我想通過以下方式解釋。 我在/ grails-app/conf /文件夾中創建了config.properties文件。

driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver 
dataSource.url = jdbc:sqlserver://localhost:1433;databaseName=testDB 
dataSource.username = sa 
dataSource.password = sa 

也更新Config.groovy中

grails.config.locations = ["classpath:config.properties"] 

,但我得到下面的錯誤
無法加載指定的配置位置的類路徑:config.properties:類路徑的資源[config.properties]不能打開,因爲它不存在

但如果使用

grails.config.locations = ["file:E:/workspace/SpringSource2.3.3/GRAILS_PRO/config.properties"] 

應用程序啓動並能夠連接到數據庫。我不想使用靜態文件路徑。使用classpath時出了什麼問題?

對'run-app'和'war'模式都有同樣的問題,即同一個文件不存在錯誤。

2日編輯:

使用類路徑中並沒有能夠得到它的工作這麼多挫折之後,我使出使用環境屬性。由於服務器將定義CATALINA_HOME,我使用下面的內容來構建外部配置文件的路徑。

def CATALINA_HOME = "CATALINA_HOME" 
def CONFIG_FILE_NAME = "db_config.properties" 
if(!grails.config.locations || !(grails.config.locations instanceof List)) { 
grails.config.locations = [] 
} 

if(System.getenv(CATALINA_HOME)) { 
    def fullPath = System.getenv(CATALINA_HOME) + File.separator + "webapps" + File.separator + "${appName}" + File.separator + "WEB-INF" + File.separator + "classes" + File.separator + CONFIG_FILE_NAME 
    grails.config.locations << "file:" + fullPath 
} else { 
    println "Missing configuration!" 
} 

上述解決方案是特定於Tomcat的。我真的很想看到classpath版本的工作!

謝謝。 Regards, Jay Chandran。

+0

是否嘗試過將在根文件夾的屬性文件,那麼在/ grails-app/conf /文件夾中仍然不起作用。獲取相同的錯誤。 – 2010-10-26 10:28:54

+0

也試過這裏提到的http://little418.com/2010/04/grails-override-configuration-with-properties-file.html – 2010-10-26 10:39:01

+0

你可以試試「classpath:/config.properties」。至少,它可以複製它的作品有時(並沒有一分鐘後,與另一個相似的文件)。 – robbbert 2010-10-26 15:55:14

回答

0

把它在其中運行Tomcat實例還是應該有你的應用程序創建一個.grails目錄的用戶的主目錄,把它放在那裏