【问题标题】:Grails 1.3.5: How to configure Datasource.groovy to either connect to MySQL or SQL ServerGrails 1.3.5:如何配置 Datasource.groovy 以连接到 MySQL 或 SQL Server
【发布时间】:2010-10-26 06:29:19
【问题描述】:

我正在开发的 grails 应用程序可以在 MySQL 或 SQL Server 上运行。我想在 application.properties 文件中添加一个新属性说
database.type=MySQL // 也可以是 SQLSERVER

如何在 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"]

但我收到以下错误
无法加载指定的配置位置 classpath:config.properties : 类路径资源 [config.properties] 无法打开,因为它不存在

但是如果使用

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

应用程序启动并能够连接到数据库。我不想使用静态文件路径。使用类路径时有什么问题?

'run-app' 和 'war' 模式有相同的问题,即相同的文件不存在错误。

第二次编辑:

在对使用类路径感到非常沮丧并且无法让它工作之后,我求助于使用环境属性。由于服务器将定义 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 特定的。我真的很想看到类路径版本的工作!

谢谢。 问候, 杰伊·钱德兰。

【问题讨论】:

  • 已尝试将属性文件放在根文件夹中,然后在 /grails-app/conf/ 文件夹中仍然不起作用。得到同样的错误。
  • 也试过这里提到的little418.com/2010/04/…
  • 你可以试试“classpath:/config.properties”。至少,它可以重现,它有时会起作用(并且不会在一分钟后,与另一个类似的文件一起使用)。
  • 自定义配置文件不会被复制到 /target/classes 或 /web-app/WEB-INF/classes,即使它们已被读入并且正在工作。 - 这方面的官方文档非常糟糕。 - 我也尝试相应地设置 DataSource.groovy - 无济于事。 - 网络上的几个示例根本不适合我。 - 这非常令人沮丧,我敢打赌这不是因为我的愚蠢。
  • 如果您指定将自定义配置文件复制到 _Events.groovy 中的类目录,如上一个链接中所述,它会被复制。我会试试“classpath:/config.properties”看看会发生什么。

标签: grails


【解决方案1】:

把它放在运行tomcat实例的用户的主目录中,或者应该有一个为你的应用程序创建的.grails目录,把它放在下面

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2022-07-15
    • 2016-11-09
    相关资源
    最近更新 更多