Tomcat中的HBase连接池?

时间:2013-07-15 18:26:56

标签: java web-services tomcat hbase

我有一个小HBase群集,运行Java前端。我已经成功地使用了建立连接,运行测试数据和断开连接的测试代码,但我需要将其扩展为webapp作为更大项目的一部分。有人建议我使用Tomcat作为HTTP服务来与数据库连接,作为其中的一部分,我需要建立一个连接池。

我理解概念级别的连接池(根据需要向客户端分发的一堆持久连接,并在丢弃时返回到池中),但我之前从未编写过webapp Tomcat是在催促我我可以找到大量关于如何使用SQL建立到JDBC服务器的连接池的文档,但HBase上没有任何文档(或者,就此而言,任何事情都可以SQL并且没有关于如何(或者我是否能够或应该)编写自定义界面以使其与Tomcat一起使用。这是可行的,甚至是可能的,还是应该采取不同的方法?

1 个答案:

答案 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();