尝试连接到 MongoLab 时 URL 格式出现 MongoException
MongoException on URL format when attempting connection to MongoLab
我有一个使用 MongoLab 作为数据库的 Grails 2.4.4 应用程序。我之前使用 GORM (see plugin here) 的 mongo 插件连接到数据库。那不是一个很好的体验,所以我正在切换到 Morpia 并远离 GORM 以获得 mongodb。
我目前将 morphia 库版本 1.0.1 作为项目中的编译时依赖项。
我在 Mongolab 中创建了一个用户,用户名:username,密码:pass(不是实际的凭据...)
我正在尝试使用 MongoClient 连接到数据库。我一直在查看文档(documentation here) and I have also referenced this question 但它使用的是旧的连接方式。
这是我的错误,尽管我没有看到抛出此错误的原因,因为我的字符串格式似乎是正确的:
ERROR context.GrailsContextLoaderListener
- Error initializing the application: Error creating bean with name 'datastore':
Cannot resolve reference to bean 'mongoClient' while setting constructor argument;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'mongoClient': Instantiation of bean failed;
nested exception is org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception;
nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
Message: Error creating bean with name 'datastore': Cannot resolve reference to bean 'mongoClient' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoClient': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception; nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
Line | Method
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'mongoClient':
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception;
nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanInstantiationException: Could not instantiate bean class [com.mongodb.MongoClient]:
Constructor threw exception; nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by MongoException: host and port should be specified in host:port format
->> 122 | <init> in com.mongodb.ServerAddress
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 49 | <init> in ''
| 118 | <init> . in com.mongodb.MongoClient
| 262 | run in java.util.concurrent.FutureTask
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
| Error Forked Grails VM exited with error
这是我在 resources.groovy 中尝试将 MongoClient、Morphia 和我的数据存储注册为 spring bean 的代码片段。
beans = {
String databaseUrl = "mongodb://username:pass@ds053251.mongolab.com:12345/trendapp" //fake port
String databaseName = "trendapp"
mongoClient(MongoClient, databaseUrl)
morphia(Morphia)
datastore(Datastore, ref('mongoClient'), databaseName) { bean ->
bean.factoryBean = 'morphia'
bean.factoryMethod = 'createDatastore'
}
}
感谢任何帮助,谢谢。
所以我没有弄清楚为什么会抛出这个错误,但我能够通过使用 MongoClient 的不同构造函数连接到我的数据库,特别是需要 (ServerAddress, List<MongoCredential>)
.[=11 的构造函数=]
您应该为 MongoClient 提供 MongoClientURI
MongoClientURI mongoClientURI = new MongoClientURI("connection string");
MongoClient mongoClient = new MongoClient(mongoClientURI);
我有一个使用 MongoLab 作为数据库的 Grails 2.4.4 应用程序。我之前使用 GORM (see plugin here) 的 mongo 插件连接到数据库。那不是一个很好的体验,所以我正在切换到 Morpia 并远离 GORM 以获得 mongodb。
我目前将 morphia 库版本 1.0.1 作为项目中的编译时依赖项。 我在 Mongolab 中创建了一个用户,用户名:username,密码:pass(不是实际的凭据...)
我正在尝试使用 MongoClient 连接到数据库。我一直在查看文档(documentation here) and I have also referenced this question 但它使用的是旧的连接方式。
这是我的错误,尽管我没有看到抛出此错误的原因,因为我的字符串格式似乎是正确的:
ERROR context.GrailsContextLoaderListener
- Error initializing the application: Error creating bean with name 'datastore':
Cannot resolve reference to bean 'mongoClient' while setting constructor argument;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'mongoClient': Instantiation of bean failed;
nested exception is org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception;
nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
Message: Error creating bean with name 'datastore': Cannot resolve reference to bean 'mongoClient' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoClient': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception; nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
Line | Method
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'mongoClient':
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [com.mongodb.MongoClient]: Constructor threw exception;
nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanInstantiationException: Could not instantiate bean class [com.mongodb.MongoClient]:
Constructor threw exception; nested exception is com.mongodb.MongoException: host and port should be specified in host:port format
->> 262 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by MongoException: host and port should be specified in host:port format
->> 122 | <init> in com.mongodb.ServerAddress
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 49 | <init> in ''
| 118 | <init> . in com.mongodb.MongoClient
| 262 | run in java.util.concurrent.FutureTask
| 1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
| Error Forked Grails VM exited with error
这是我在 resources.groovy 中尝试将 MongoClient、Morphia 和我的数据存储注册为 spring bean 的代码片段。
beans = {
String databaseUrl = "mongodb://username:pass@ds053251.mongolab.com:12345/trendapp" //fake port
String databaseName = "trendapp"
mongoClient(MongoClient, databaseUrl)
morphia(Morphia)
datastore(Datastore, ref('mongoClient'), databaseName) { bean ->
bean.factoryBean = 'morphia'
bean.factoryMethod = 'createDatastore'
}
}
感谢任何帮助,谢谢。
所以我没有弄清楚为什么会抛出这个错误,但我能够通过使用 MongoClient 的不同构造函数连接到我的数据库,特别是需要 (ServerAddress, List<MongoCredential>)
.[=11 的构造函数=]
您应该为 MongoClient 提供 MongoClientURI
MongoClientURI mongoClientURI = new MongoClientURI("connection string");
MongoClient mongoClient = new MongoClient(mongoClientURI);