基本的に、私は自分のプロジェクトを AppFog で起動して実行しようとしています。データソース情報は、基本的に JSON である環境変数に格納されます。私の目標は、このデータを取得し、そこからデータソース構成を設定することです。
これが私が試したことです:
POGO のメソッドであるデータソース構成を設定するコード。POGO がインスタンス化され、DataSource.groovy の先頭でメソッドが呼び出されます。
import appfog.ParseDataSource
new ParseDataSource().setConfig()
dataSource {
...
}
class ParseDataSource {
void setConfig() {
String env = java.lang.System.getenv("VCAP_SERVICES")
if (env) {
def config = JSON.parse(env)
config = config["mysql-5.1"][0].credentials
grailsApplication.config.environments.production.dataSource.username = config.username
grailsApplication.config.environments.production.dataSource.password = config.password
grailsApplication.config.environments.production.dataSource.url = "jdbc:mysql://" + config.host + ":" + config.port + "/" + config.name
}
}
}
問題は、grailsApplication が常に null であることです。Resources.groovyにSpring Beanを登録しようとしました:
beans = {
parseDataSource(appfog.ParseDataSource) {
grailsApplication = ref('grailsApplication')
}
}
class ParseDataSource {
def grailsAPplication
...
}
また、ホルダー経由で取得しようとしました:
GrailsApplication grailsApplication = Holders.grailsApplication
どちらにしても null なので、私は正しいことをしていません。何か案は?