我有一个小HBase
群集,运行Java
前端。我已经成功地使用了建立连接,运行测试数据和断开连接的测试代码,但我需要将其扩展为webapp作为更大项目的一部分。有人建议我使用Tomcat
作为HTTP
服务来与数据库连接,作为其中的一部分,我需要建立一个连接池。
我理解概念级别的连接池(根据需要向客户端分发的一堆持久连接,并在丢弃时返回到池中),但我之前从未编写过webapp Tomcat
是在催促我我可以找到大量关于如何使用SQL
建立到JDBC
服务器的连接池的文档,但HBase
上没有任何文档(或者,就此而言,任何事情都可以SQL
并且没有关于如何(或者我是否能够或应该)编写自定义界面以使其与Tomcat
一起使用。这是可行的,甚至是可能的,还是应该采取不同的方法?
答案 0 :(得分:0)
我认为很难找到Tomcat
的内容,我不认为这样的事情存在。大多数人可能正在使用自定义类。话虽这么说,你应该围绕HTablePool
附带的HBase
构建一些东西。
以下是您可以在项目中使用的示例:
public class HTableManager {
public static int HTABLE_POOL_SIZE = 15;
private static HTableManager instance;
private static HTablePool hTablePool;
/**
* Private Constructor
*/
private HTableManager() {
try {
Configuration config = HBaseConfiguration.create();
config.set("hbase.defaults.for.version.skip", "false");
hTablePool = new HTablePool(config, HTABLE_POOL_SIZE);
} catch (IOException ex) {
// Error handling
}
}
/**
* @return The HbaseTableManager instance
*/
public static HTableManager getInstance() {
if (instance == null) {
instance = new HTableManager();
}
return instance;
}
/**
* Method used to retrieve a HTable instance.
*
* @param tableName The table name
* @return The HTableInterface instance
* @throws IOException
*/
public synchronized HTableInterface getHTable(String tableName) throws IOException {
return hTablePool.getTable(tableName);
}
}
然后你可以像这样使用它:
HTableManager hTableManager = htableManager.getInstance();
HTableInterface hTable = hTableManager.getHTable("yourTableName");
...
// Work with the hTable instance
...
// A call to the close method returns it to the pool
hTable.close();