我有一个停靠的mongodb示例。我试图让SpringBoot连接到它,但当启动SpringBoot时,我得到一个错误消息。
请在下面找到详细信息。
错误消息:
com.mongodb.MongoSocketException: mongodb://localhost:27017/airbnb-data
at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.1.jar:na]
at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.1.jar:na]
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.1.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.1.jar:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.1.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_281]
Caused by: java.net.UnknownHostException: mongodb://localhost:27017/airbnb-data
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_281]
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_281]
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_281]
at java.net.InetAddress.getAllByName0(InetAddress.java:1277) ~[na:1.8.0_281]
at java.net.InetAddress.getAllByName(InetAddress.java:1193) ~[na:1.8.0_281]
at java.net.InetAddress.getAllByName(InetAddress.java:1127) ~[na:1.8.0_281]
at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.1.jar:na]
spring boot应用程序中的application.properties:
spring.data.mongodb.uri=mongodb://localhost:27017/airbnb-data
spring.data.mongodb.port=27017
spring.data.mongodb.database=airbnb-data
spring.data.mongodb.host=localhost
spring.data.mongodb.username=mongodbuser
spring.data.mongodb.password=mongodbpwd
启动mongodb示例的docker-compose.yml:
version: '3'
services:
mongoex:
image: mongo-express
environment:
ME_CONFIG_OPTIONS_EDITORTHEME: ambiance
ME_CONFIG_MONGODB_SERVER: mongodb
ME_CONFIG_MONGODB_PORT: 27017
ME_CONFIG_MONGODB_ENABLE_ADMIN: "true"
ME_CONFIG_MONGODB_ADMINUSERNAME: mongodbuser
ME_CONFIG_MONGODB_ADMINPASSWORD: mongodbpwd
ME_CONFIG_MONGODB_AUTH_DATABASE: admin
ME_CONFIG_MONGODB_AUTH_USERNAME: mongodbuser
ME_CONFIG_MONGODB_AUTH_PASSWORD: mongodbpwd
ME_CONFIG_BASICAUTH_USERNAME: mongoexuser
ME_CONFIG_BASICAUTH_PASSWORD: mongoexpwd
ports:
- "8081:8081"
links:
- mongodb
networks:
- backend
- frontend
mongodb:
image: mongo:latest
container_name: mongodb
restart: unless-stopped
command: mongod --auth
environment:
MONGO_INITDB_ROOT_USERNAME: mongodbuser
MONGO_INITDB_ROOT_PASSWORD: mongodbpwd
MONGODB_DATA_DIR: /data/db
MONDODB_LOG_DIR: /dev/null
ports:
- "27017:27017"
volumes:
- mongodbdata:/data/db
networks:
- backend
- frontend
networks:
frontend:
driver: bridge
backend:
driver: bridge
volumes:
mongodbdata:
driver: local
dataconfig类:
@Configuration
public class DatabaseConfig extends AbstractMongoConfiguration {
@Value("${spring.data.mongodb.myuri}")
private String mongoDbUrl;
@Value("${spring.data.mongodb.port}")
private String port;
@Value("${spring.data.mongodb.database}")
private String mongoDbName;
/**
* Url to mongo db
*
* @return a string representing the url of bdd
* @throws MalformedURLException
*/
@Override
public MongoClient mongoClient() {
return new MongoClient(this.mongoDbUrl, Integer.parseInt(this.port));
}
@Override
public @Bean MongoTemplate mongoTemplate() throws Exception {
MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory()),
new MongoMappingContext());
converter.setMapKeyDotReplacement("\\+");
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
return mongoTemplate;
}
@Override
protected String getDatabaseName() {
return this.mongoDbName;
}
/**
* Access to Mongo db
*
* @return link to db
* @throws Exception
*
* @Bean public MongoTemplate accessBddMongo() throws Exception { return new
* MongoTemplate(bddGetEndpointUrl(), mongoDbName); }
*/
}
谢谢你的帮助
1条答案
按热度按时间iyr7buue1#
我意识到我不需要在dataconfig类中设置mongoclient()方法。修改后,我有:
解决了的