package mil.nga.giat.geowave.datastore.hbase.util;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
public class ConnectionPool
{
private static ConnectionPool singletonInstance;
public static synchronized ConnectionPool getInstance() {
if (singletonInstance == null) {
singletonInstance = new ConnectionPool();
}
return singletonInstance;
}
private final Map<String, Connection> connectorCache = new HashMap<String, Connection>();
private static final String HBASE_CONFIGURATION_TIMEOUT = "timeout";
private static final String HBASE_CONFIGURATION_ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";
public synchronized Connection getConnection(
final String zookeeperInstances )
throws IOException {
Connection connection = connectorCache.get(zookeeperInstances);
if (connection == null) {
final Configuration hConf = HBaseConfiguration.create();
hConf.set(
HBASE_CONFIGURATION_ZOOKEEPER_QUORUM,
zookeeperInstances);
hConf.setInt(
HBASE_CONFIGURATION_TIMEOUT,
120000);
connection = ConnectionFactory.createConnection(hConf);
connectorCache.put(
zookeeperInstances,
connection);
}
return connection;
}
}