Подключение к нескольким базам данных MongoDB Java

#java #mongodb #ssl

#java #mongodb #ssl

Вопрос:

У меня есть 2 разные базы данных (firstDB, secondDB), подключение отдельно к каждой из них работает корректно, но если в одном сеансе я пытаюсь подключиться ко второму, я получаю сообщение об ошибке, я подключаюсь к первому без проблем

 public static MongoDatabase dbConnect() {
       System.setProperty("javax.net.ssl.keyStore", "src/main/resources/firstDB.pkcs12");
       System.setProperty("javax.net.ssl.keyStorePassword", "qwerty");
       ConnectionString connectionString = new ConnectionString(System.getenv("FirstMongoDB_DEV"));
       CodecRegistry pojoCodecRegistry = fromProviders(PojoCodecProvider.builder().automatic(true).build());
       CodecRegistry codecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),
               pojoCodecRegistry);

       MongoClientSettings clientSettings = MongoClientSettings.builder()
               .applyConnectionString(connectionString)
               .codecRegistry(codecRegistry)
               .build();
       return MongoClients.create(clientSettings).getDatabase("firstDB");

   }
 

код для подключения одинаков для обоих, поэтому, если я вызову firstDB connect, он будет работать нормально, и если после этого я вызову connect для secondDB, я получу com.mongodb.MongoSocketReadException: преждевременно достигнут конец потока
Если я поменяю местами соединения, сначала на secondDB, а затем на firstDB, я получу тот же результат

Комментарии:

1. В общем, вы можете получить ссылку на несколько баз данных с одним и тем же MongoClient экземпляром.

2. @prasad_ Как это сделать с 2 разными строками подключения? у обоих из них есть собственный логин / проход

Ответ №1:

Проблема заключалась в том, что JVM не знает, как динамически изменять хранилище ключей, библиотеку, которая помогла