Вы создаете новый MongoClient каждый раз, когда проходите свой метод.
У меня тоже была эта проблема, но я решил ее с помощью функции checkConnection:
private static DBCollection checkConnection(String collection) throws UnknownHostException{
if(db == null){
db = (new MongoClient(host, port)).getDB(database);
}
return db.getCollection(collection);
}
На вершине, где вы создаете свои переменные, имейте это:
private static DB db = null;
private static String database = "<Your database>";
private static String host = "localhost"; //<--- usually localhost
private static int port = 27017; //<---- usually 27017, but you can change it.
Тогда, когда вы создадите метод, сделайте так:
public <whatever> someFunction() throws UnknownHostException{
DBCollection dbCollection = checkConnection("triples"); //<--- can be "triples"
//or whatever collection you want
<REST OF YOUR FUNCTION HERE USING THE AMAZING COLLECTION
}
У этого подхода есть несколько преимуществ:
- Code reusability, you won't have to write the same thing at every method
- Readability, which programmer doesn't understand this:
DBCollection dbCollection = checkConnection("triples");
- ONLY ONE CONNECTION WHICH YOU RE-USE (this doesn't affect data not being synced)
Надеюсь, я помог