0

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

我在概念层面上理解连接池(一堆到数据库的持久连接根据需要分发给客户端并在丢弃时返回到池中),但我以前从未编写过 webapp,Tomcat这让我很烦恼。我可以找到大量关于如何SQL使用JDBC.它与. 这是可行的,甚至是可能的,还是我应该采取不同的方法?HBaseSQLTomcat

4

1 回答 1

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();
于 2013-07-15T18:57:59.083 回答