【问题标题】:Binding to MongoDB service from Grails application deployed on Cloudfoundry从部署在 Cloudfoundry 上的 Grails 应用程序绑定到 MongoDB 服务
【发布时间】:2013-05-01 07:39:08
【问题描述】:

我目前正在使用 Grails 2.2.2 和 MySQL 编写一个 Grails 应用程序,并将其部署到 Cloudfoundry。

直到最近,我才为我的域使用了一个 MySQL 数据源,Cloudfoundry 检测到该数据源并自动创建并绑定一个 MySQL 服务实例。

我现在需要在某个地方存储潜在的大文件,所以我想看看 MongoDB 的 GridFS。 Cloudfoundry 支持 MongoDB,所以我认为 Cloudfoundry 在我部署我的应用程序时会发挥更大的作用,并且还会为我提供 MongoDB 数据源。

不幸的是,当我部署我的应用程序时,系统没有提示我创建/绑定 MongoDB 服务,我认为这可能与我连接到 Mongo 的方式有关。

我没有使用 MongoDB 插件,因为这与我正在使用的另一个插件冲突,并且无论如何我不需要将我的任何域持久化到 Mongo - 只是一些大文件 - 所以我直接使用 Mongo java 驱动程序(类似于这个 - http://jameswilliams.be/blog/entry/171)。

我不确定 Cloudfoundry 是如何检测到您的应用程序需要特定数据源的,但我认为它会以某种方式从 DataSource.groovy 中解决这个问题。

我的看起来像这样......

environments {
    development {
        dataSource {
            driverClassName = "com.mysql.jdbc.Driver"
            dbCreate = "create-drop" 
            ...
        }
        dataSourceMongo {
            host = "localhost"
            port = 27017
            dbName = "my_mongo_database_name"
            ...
        }
    }
}

我有什么遗漏吗?还是我需要以某种方式手动绑定MongoDB服务?

【问题讨论】:

  • 要了解 grails 应用程序中存在多个数据源,必须将非默认 datasource 命名为 datSource_Mongo(带下划线)。你试过那个选项吗?
  • 感谢您的提示 - 我已将 dataSourceMongo 更改为 dataSource_mongo,但 Cloudfoundry 仍然没有提示将 Mongo 实例绑定到它。

标签: mongodb grails cloud-foundry gridfs


【解决方案1】:

使用 answer 代替 cmets 以获得更好的格式。 :)

我猜您已经按照here 中提到的步骤在 Cloudfoundry 中创建 MongoDB 服务,否则必须这样做。另外,如果您使用名为 GMongo 的 MongoDB 的 Java 驱动程序的 Groovy 包装器,将会容易得多。请参阅GitHUb Source 和此Mongo blog 了解更多详情。

【讨论】:

  • 不幸的是,我无法使用 MongoDB 插件——我认为一些休眠过滤器的东西会干扰我已经在使用的多租户插件。是的,我已经尝试过先手动创建 MongoDB 服务,但仍然没有运气。我目前正在考虑其他选项(例如将文件存储在文件系统上而不部署到 Cloudfoundry!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多