public class ConnectionManager { private ConnectionManager() { } private static final Logger logger = LoggerFactory.getLogger(ConnectionManager.class); private static MongoClient mongoClient = null; private static String connections = null; private static String connectionTimeOut = null; private static String socketTimeOut = null; private static String serverSelectionTimeOut = null; private static String URL = null; private static String username = null; private static String password = null; private static String hostname = null; private static String port = null; private static String maxConnectionIdleTime = null; private static String minConnectionsPerHost = null; private static String maxConnectionLifeTime = null; private static String dbName = null; static { dbName = ValidationProperties.getValue("clm.db.dbName"); mongoClient = getCLMSecondaryMongoConnection(); } private static MongoClient getCLMSecondaryMongoConnection() { connections = ValidationProperties.getValue("clm.db.connectionsPerHost"); connectionTimeOut = ValidationProperties.getValue("clm.db.connectTimeoutMS"); socketTimeOut = ValidationProperties.getValue("clm.db.socketTimeOut"); serverSelectionTimeOut = ValidationProperties.getValue("clm.db.serverSelectionTimeOut"); username = ValidationProperties.getValue("clm.db.userName"); password = ValidationProperties.getValue("clm.db.password"); hostname = ValidationProperties.getValue("clm.db.hostname"); port = ValidationProperties.getValue("clm.db.portnumber"); maxConnectionIdleTime = ValidationProperties.getValue("clm.db.maxConnectionIdleTime"); minConnectionsPerHost = ValidationProperties.getValue("clm.db.minConnectionsPerHost"); try { List creds = new ArrayList(); creds.add(MongoCredential.createCredential(username, dbName, password.toCharArray())); /*creds.add(MongoCredential.createMongoCRCredential(username, dbName, password.toCharArray()));*/ MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder(); optionsBuilder.connectTimeout(Integer.parseInt(connectionTimeOut)); optionsBuilder.serverSelectionTimeout(Integer.parseInt(serverSelectionTimeOut)); optionsBuilder.socketTimeout(Integer.parseInt(socketTimeOut)); optionsBuilder.connectionsPerHost(Integer.parseInt(connections)); optionsBuilder.maxConnectionIdleTime(Integer.parseInt(maxConnectionIdleTime)); optionsBuilder.minConnectionsPerHost(Integer.parseInt(minConnectionsPerHost)); if(Boolean.valueOf(ValidationProperties.getValue("clm.db.useSecondaryMongoForRead"))) { logger.info("Read is going for secondary mongoDB"); optionsBuilder.readPreference(ReadPreference.secondaryPreferred()); } MongoClientOptions options = optionsBuilder.build(); mongoClient = new MongoClient(new ServerAddress(hostname, Integer.parseInt(port)), creds, options); } catch (Exception e) { logger.error("Error while connecting the Mongo DB {}", e); } return mongoClient; } public static MongoClient getMongoClient() { return mongoClient; } java