The grails application I am developing could run against MySQL or SQL Server. I want to add a new property in application.properties file say
database.type=MySQL // or it could be SQLSERVER
How do I get this property in Datasource.groovy so that if it is MySQL I connect to MySQL server or it is SQLSERVER I connect to SQL Server?
Is this the correct way to do it? How can I do it?
EDIT: After reading and searching for options I figured the following way explained.
I have created config.properties file in /grails-app/conf/ folder.
driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
dataSource.url = jdbc:sqlserver://localhost:1433;databaseName=testDB
dataSource.username = sa
dataSource.password = sa
Also updated Config.groovy
grails.config.locations = ["classpath:config.properties"]
But I get the below error
Unable to load specified config location classpath:config.properties : class path resource [config.properties] cannot be opened because it does not exist
But if use
grails.config.locations = ["file:E:/workspace/SpringSource2.3.3/GRAILS_PRO/config.properties"]
The application starts up and is able to connect to the database. I don't want to use static file path. What is wrong when using classpath?
Have the same issue for both 'run-app' and 'war' mode i.e. same file does not exist error.
2nd EDIT:
After so much frustration of using classpath and not able to get it to work, I resorted to using environment property. Since server will have CATALINA_HOME defined, I used the below to build the path for external configuration file.
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!"
}
The above solution is Tomcat specific. I really would like to see classpath version working!
Thank You.
Regards,
Jay Chandran.
No comments:
Post a Comment