2010-10-26 53 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目录的用户的主目录,把它放在那里