gcube-cms-suite/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/MongoClientProvider.java

58 lines
1.9 KiB
Java
Raw Normal View History

2021-09-20 16:47:35 +02:00
package org.gcube.application.geoportal.service.engine.providers;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import lombok.extern.slf4j.Slf4j;
2021-10-06 11:26:35 +02:00
import org.gcube.application.geoportal.service.ServiceConstants;
2021-09-20 16:47:35 +02:00
import org.gcube.application.geoportal.service.engine.ImplementationProvider;
import org.gcube.application.geoportal.service.model.internal.db.MongoConnection;
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
2021-10-06 11:26:35 +02:00
import org.gcube.application.geoportal.service.utils.ISUtils;
2021-09-20 16:47:35 +02:00
@Slf4j
public class MongoClientProvider extends AbstractScopedMap<MongoClient>{
public MongoClientProvider() {
super("MongoClient cache");
2021-10-06 11:26:35 +02:00
//NO TTL = Map by context
2021-09-20 16:47:35 +02:00
// setTTL(Duration.of(10, ChronoUnit.MINUTES));
}
@Override
protected MongoClient retrieveObject() throws ConfigurationException {
2021-10-06 11:26:35 +02:00
MongoConnection conn=ImplementationProvider.get().
getIsProvider().getIS().queryForMongoDB(
ServiceConstants.MONGO_SE_PLATFORM, ServiceConstants.MONGO_SE_GNA_FLAG);
2021-09-20 16:47:35 +02:00
log.debug("Connecting to "+conn);
MongoCredential credential = MongoCredential.createCredential(conn.getUser(), conn.getDatabase(),
conn.getPassword().toCharArray());
2021-10-06 11:26:35 +02:00
MongoClientOptions options = MongoClientOptions.builder().
threadsAllowedToBlockForConnectionMultiplier(10).
connectionsPerHost(20).
2021-10-06 15:12:34 +02:00
maxConnectionIdleTime(10000).
2021-10-06 11:26:35 +02:00
applicationName("geoportal-service").
sslEnabled(true).
2021-10-06 16:12:16 +02:00
connectTimeout(30000).
2021-10-06 11:26:35 +02:00
build();
2021-09-20 16:47:35 +02:00
return new MongoClient(new ServerAddress(conn.getHosts().get(0),conn.getPort()),
credential,
options);
}
@Override
protected void dispose(MongoClient toDispose) {
toDispose.close();
}
@Override
public void init() {
// TODO Auto-generated method stub
}
}