MongoDB インスタンスに接続している Grails アプリがあります。私の Datasource.groovy では、次のように宣言しています。
grails {
mongo {
host = "localhost"
port = 27017
databaseName = "mmib-mongo"
}
}
Mongo がインストールされ、問題なく起動します。
問題は、ネットワークに接続しているときに grails run-app を使用すると、次の例外がログに記録されることです。
Grails アプリケーションのパッケージ化..... | Grails アプリケーションの実行
Spring Security Core の構成 ... ... Spring Security Core の構成が完了しました
Spring Security LDAP の構成 ... ... Spring Security LDAP の構成を完了 | エラー 2012-11-19 15:42:16,428 [localhost-startStop-1] エラー context.GrailsContextLoader - ブートストラップの実行中にエラーが発生しました: 名前 'mongoDatastore' の Bean を作成中にエラーが発生しました: FactoryBean がオブジェクトの作成時に例外をスローしました。ネストされた例外は org.springframework.dao.DataAccessResourceFailureException: can't call something : MBP-C02J91TWDKQ5.local/192.168.0.131:27017/mmib-mongo; ネストされた例外は com.mongodb.MongoException$Network: 何かを呼び出すことができません: MBP-C02J91TWDKQ5.local/192.168.0.131:27017/mmib-mongo メッセージ: 名前が 'mongoDatastore' の Bean の作成中にエラーが発生しました: FactoryBean がオブジェクトの作成時に例外をスローしました。ネストされた例外は org.springframework.dao.DataAccessResourceFailureException: can't call something : MBP-C02J91TWDKQ5 です。192.168.0.131:27017/mmibモンゴ*; ネストされた例外は com.mongodb.MongoException$Network: 何かを呼び出すことができません: MBP-C02J91TWDKQ5.local/192.168.0.131:27017/mmib-mongo
ネットワークに接続しているときに、Grails/Mongo が localhost の代わりにその IP アドレスを使用したい理由の手がかりは、/etc/hosts で 127.0.0.1 であることを確認しました