我正在开发的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。
是否尝试过将在根文件夹的属性文件,那么在/ grails-app/conf /文件夹中仍然不起作用。获取相同的错误。 – 2010-10-26 10:28:54
也试过这里提到的http://little418.com/2010/04/grails-override-configuration-with-properties-file.html – 2010-10-26 10:39:01
你可以试试“classpath:/config.properties”。至少,它可以复制它的作品有时(并没有一分钟后,与另一个相似的文件)。 – robbbert 2010-10-26 15:55:14