无法从spring启动连接到停靠的mongodb示例

mitkmikd  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(366)

我有一个停靠的mongodb示例。我试图让SpringBoot连接到它,但当启动SpringBoot时,我得到一个错误消息。
请在下面找到详细信息。
错误消息:

  1. com.mongodb.MongoSocketException: mongodb://localhost:27017/airbnb-data
  2. at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.1.jar:na]
  3. at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.1.jar:na]
  4. at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.1.jar:na]
  5. at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.1.jar:na]
  6. at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.1.jar:na]
  7. at java.lang.Thread.run(Thread.java:748) [na:1.8.0_281]
  8. Caused by: java.net.UnknownHostException: mongodb://localhost:27017/airbnb-data
  9. at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_281]
  10. at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929) ~[na:1.8.0_281]
  11. at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324) ~[na:1.8.0_281]
  12. at java.net.InetAddress.getAllByName0(InetAddress.java:1277) ~[na:1.8.0_281]
  13. at java.net.InetAddress.getAllByName(InetAddress.java:1193) ~[na:1.8.0_281]
  14. at java.net.InetAddress.getAllByName(InetAddress.java:1127) ~[na:1.8.0_281]
  15. at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.1.jar:na]

spring boot应用程序中的application.properties:

  1. spring.data.mongodb.uri=mongodb://localhost:27017/airbnb-data
  2. spring.data.mongodb.port=27017
  3. spring.data.mongodb.database=airbnb-data
  4. spring.data.mongodb.host=localhost
  5. spring.data.mongodb.username=mongodbuser
  6. spring.data.mongodb.password=mongodbpwd

启动mongodb示例的docker-compose.yml:

  1. version: '3'
  2. services:
  3. mongoex:
  4. image: mongo-express
  5. environment:
  6. ME_CONFIG_OPTIONS_EDITORTHEME: ambiance
  7. ME_CONFIG_MONGODB_SERVER: mongodb
  8. ME_CONFIG_MONGODB_PORT: 27017
  9. ME_CONFIG_MONGODB_ENABLE_ADMIN: "true"
  10. ME_CONFIG_MONGODB_ADMINUSERNAME: mongodbuser
  11. ME_CONFIG_MONGODB_ADMINPASSWORD: mongodbpwd
  12. ME_CONFIG_MONGODB_AUTH_DATABASE: admin
  13. ME_CONFIG_MONGODB_AUTH_USERNAME: mongodbuser
  14. ME_CONFIG_MONGODB_AUTH_PASSWORD: mongodbpwd
  15. ME_CONFIG_BASICAUTH_USERNAME: mongoexuser
  16. ME_CONFIG_BASICAUTH_PASSWORD: mongoexpwd
  17. ports:
  18. - "8081:8081"
  19. links:
  20. - mongodb
  21. networks:
  22. - backend
  23. - frontend
  24. mongodb:
  25. image: mongo:latest
  26. container_name: mongodb
  27. restart: unless-stopped
  28. command: mongod --auth
  29. environment:
  30. MONGO_INITDB_ROOT_USERNAME: mongodbuser
  31. MONGO_INITDB_ROOT_PASSWORD: mongodbpwd
  32. MONGODB_DATA_DIR: /data/db
  33. MONDODB_LOG_DIR: /dev/null
  34. ports:
  35. - "27017:27017"
  36. volumes:
  37. - mongodbdata:/data/db
  38. networks:
  39. - backend
  40. - frontend
  41. networks:
  42. frontend:
  43. driver: bridge
  44. backend:
  45. driver: bridge
  46. volumes:
  47. mongodbdata:
  48. driver: local

dataconfig类:

  1. @Configuration
  2. public class DatabaseConfig extends AbstractMongoConfiguration {
  3. @Value("${spring.data.mongodb.myuri}")
  4. private String mongoDbUrl;
  5. @Value("${spring.data.mongodb.port}")
  6. private String port;
  7. @Value("${spring.data.mongodb.database}")
  8. private String mongoDbName;
  9. /**
  10. * Url to mongo db
  11. *
  12. * @return a string representing the url of bdd
  13. * @throws MalformedURLException
  14. */
  15. @Override
  16. public MongoClient mongoClient() {
  17. return new MongoClient(this.mongoDbUrl, Integer.parseInt(this.port));
  18. }
  19. @Override
  20. public @Bean MongoTemplate mongoTemplate() throws Exception {
  21. MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(mongoDbFactory()),
  22. new MongoMappingContext());
  23. converter.setMapKeyDotReplacement("\\+");
  24. MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
  25. return mongoTemplate;
  26. }
  27. @Override
  28. protected String getDatabaseName() {
  29. return this.mongoDbName;
  30. }
  31. /**
  32. * Access to Mongo db
  33. *
  34. * @return link to db
  35. * @throws Exception
  36. *
  37. * @Bean public MongoTemplate accessBddMongo() throws Exception { return new
  38. * MongoTemplate(bddGetEndpointUrl(), mongoDbName); }
  39. */
  40. }

谢谢你的帮助

iyr7buue

iyr7buue1#

我意识到我不需要在dataconfig类中设置mongoclient()方法。修改后,我有:

  1. @Override
  2. public MongoClient mongoClient() {
  3. return new MongoClient();
  4. }

解决了的

相关问题